java (class, 객체(인스턴스))

이인아·2024년 8월 27일
0

java

목록 보기
2/16
    // 폴더 -> 배열 (int에는 숫자만 가능, String에는 문자만 가능)
    // 폴더 -> 숫자, 문자 가리지 않고 다 저장 가능한 개념 ==> 객체

    // int [] hong = new int[3]; // 배열로는 안됨


    int a;
    String b;

    Person c; // 폴더가 만들어졌는가? X
    Person hong = new Person();// Person 설계도에 따라서 객체를 하나 만들어줘. 그리고 c 변수에 담아줘
    Person lee = new Person();

    // 객체(인스턴스), class

    hong.age = 20;
    hong.name = "홍길동";
    hong.home = "서울";

    // 사람을 표현하는 방법은 무한가지.
    // 자바는 변수 저장할 때 자료형을 요구
    // 객체는 먼저 어떻게 생겼는지 정의되어야 자바가 만들어줄 수 있다. -> 설계도(class)를 먼저 만든다
    // *클래스 만들때 주의사항* 클래스 이름이 같으면 충돌이 일어남*
        (패키지와 클래스도 같은 패키지 안에 있으면 충돌이 일어남)
        
        // 자바의 변수는 최대 크기가 제한이 되어 있다. 8바이트
    // 숫자(int) -> 4바이트
    // 숫자 3개짜리 객체 -> 12바이트

    // 객체는 크기가 커서 변수에 저장되지 않습니다.
    // 변수에 저장될 작은 크기의 리모콘(참조값)을 제공한다.
    Test t1 = new Test();

    int a = 10;
    int b = a;

    System.out.println(b);

    t1.num1 = 10;

    System.out.println(t1.num1);

    Test t2 = t1; // t1이 t2로 리모콘이 복사되었다.

    System.out.println(t2.num1);

    t2.num1 = 100;

    System.out.println(t1.num1);

    Test t3; // 객체 X. 객체의 리모콘을 저장할 변수. 대입한 것이 없기 때문에 비어 있다.

    Test t4 = new Test(); // new를 하면 객체가 생성됨과 동시에 해당 객체를 조종할 수 있는 리모콘이 같이 만들어짐

    // 리모콘을 잃어버리게 되면 해당 객체에 접근할 수 있는 방법이 없다.
    // 위와 같이 리모콘과 연결이 해제된 객체를 가비지 객체라고 해서 나중에 자바가 싹 다 지워버린다.(가비지컬렉터)
    
    
    
    
    //Function
    public class Method {
    public static void main(String[] args) {
    Person p1 = new Person();
    p1.age = 20;
    p1.name = "홍길동";

    // 변수 -> 정보를 저장
    // 메서드 -> 동작을 수행

    Person p2 = new Person();
    p2.age = 30;
    p2.name = "이순신";

    p1.introduce2();
    p2.introduce2();

}

}

// 객체(사물 표현) -> 상태/동작 -> 변수와 메서드의 집합이다.
public class Person {
// 변수는 상태를 표현한다.
int age;
String name;

// 메서드는 동작(연산)을 표현한다.
// 접근제어자 리턴타입 메서드명(매개변수) { 내용 }
// 동작은 일단 쉽게 출력으로 대체할 것임.
public void walk() {
    System.out.println("사람이 걷습니다.");
}

// 매개변수
public void introduce(String name2, int age2) {
    System.out.println("안녕하세요 " + age2 + "살 " + name2 + "입니다.");
}

public void introduce2() {
    System.out.println("안녕하세요 " + age + "살 " + name + "입니다.");
}

0개의 댓글