티스토리 뷰

반응형

 

🤔 객체의 생성

// 	클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
//  변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

    Tv t; // t : 참조변수
    t = new Tv();  // Tv 인스턴스 생성 후, 생성된 Tv 인스턴스의 주소를 t에 저장

 

 

✅ 순서

클래스 작성 -> 객체 생성 -> 객체 사용

 

 

🤔 객체 배열

객체 배열 == 참조변수 배열

 

출처 : 남궁성 자바의 정석 강의

 

 

🤔 클래스의 정의

클래스 == 데이터 + 함수

 

🤔 변수란?

하나의 데이터를 저장할 수 있는 공간

 

🤔 배열이란?

같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간

배열의 한계 : 같은 종류의 데이터만 저장할 수 있다.

 

🤔 구조체란?

서로 관련된 여러 데이터(종류 관계X)를 하나로 저장할 수 있는 공간

❓ 왜 묶을까? ==> 서로 연관관계가 있으니까!

 

🤔 클래스란?

데이터와 함수의 결합(구조체 + 함수)

 

출처 : 남궁성 자바의 정석 강의

 

 

🤔 선언위치에 따른 변수의 종류

class Variables {
    int iv; // 인스턴스 변수
    static int cv; // 클래스 변수(static 변수, 공유변수)
    
    void method() {
        int lv = 0; // 지역변수
    }
}

 

출처 : 남궁성 자바의 정석 강의

 

✅ CV(class variable)과 IV(Instance variable)의 차이?

클래스 변수는 객체 생성이 필요 없지만

(언제나 사용가능)

인스턴스 변수는 객체 생성이 필요하다!

(객체 생성되어야 사용가능)

 

 

⭐ 객체 = IV(Instance variable)의 묶음

 

 

🤔 클래스 변수와 인스턴스 변수

각 객체별 공통 속성 : 클래스 변수(CV)

각 객체별 개별 속성 : 인스턴스 변수(IV)

 

class Card {
    String kind; // 무늬
    int number; // 숫자
    
    static int width = 100; // 폭
    static int height = 250; // 높이
}

Card c = new Card();
c.kind="HEART"
c.number = 5;

// 클래스 변수는 c.의 방식보단
c.width = 200;
c.height = 300;

// 다음과 같이 Card.의 방식으로 작성하느 것이 좋다!
// 왜냐? IV와 헷갈릴 수 있기 때문에
Card.width = 200;
Card.height = 300;

 

어떤 게 헷갈리는 것일까?

다음의 예시를 살펴보자.

 

class Card {
    String kind; // 무늬
    int number; // 숫자

    static int width = 100; // 폭
    static int height = 250; // 높이
}

Card c = new Card();
c1.kind="HEART"
c1.number = 5;

c2.kind="SPADE"
c2.number = 3;   

// 이렇게 객체 인스턴스가 두 개일때 IV변수를 변경하면
c1.kind="SPADE"   // c1 : (HEART, 5) => (SPADE, 5) 로 변경됨.
        
// 근데 다음과 같이 변경하면 어떻게 될까?
c1.width = 200;   // c1 width : 200, c2 width : 200으로 같이 변경됨.

// 왜냐? 클래스 변수니까 
// 그래서 코드가 헷갈리게 된다!!
// 코드만 보면 c1의 width만 변경한 것 같은데 c2의 width도 같이 변경되니까
// CV 변경할때는 Card.width = 200;의 형식을 사용하는 것이 좋다.

주석으로 잘 설명해 두었으므로

헷갈리지 않을 것이다.

 

만약 이해가 안되는 부분이 있다면

답글을 달아주면 답해드리겠다!!

 


그럼 오늘도 열공하자 🔥

반응형