코드 그라데이션

[보충] 객체 지향에 대한 이해 - 클래스 본문

Java/Mega

[보충] 객체 지향에 대한 이해 - 클래스

완벽한 장면 2023. 3. 29. 10:23

객체와 인스턴스

클래스에 의해서 만들어진 객체를 인스턴스라고도 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까?

 

Animal cat = new Animal() 

이렇게 만들어진 cat은 객체이다.

 

그리고 cat이라는 객체는 Animal의 인스턴스(instance) 이다.

인스턴스라는 말은 특정 객체(cat)가 어떤 클래스(Animal)의 객체인지를 관계위주로 설명할 때 사용된다.

 

즉, "cat은 인스턴스" 보다는 "cat은 객체"라는 표현이

"cat은 Animal의 객체" 보다는 "cat은 Animal의 인스턴스" 라는 표현이

훨씬 잘 어울린다.

 

class Animal {
}

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
    }
}

지금 이 상황이라면

객체는 Animal, 인스턴스는 cat.

 

즉, cat은 Animal을 실제로 메모리에 할당해서 사용하게 되는 인스턴스이다.

 

다시 말하면

객체는 선언된 것. 지금 Sample 클래스에 Animal 타입으로 선언된 것이고,

실제로 cat을 가져와서 쓰는 것이니까.

 

------------------

 

객체 변수 (Instance variable)

class Animal {
    String name;
}

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
    }
}

 

Animal 클래스에 name 이라는 String 변수를 추가했다. 이렇게 클래스에 선언된 변수를 객체 변수 라고 한다. 객체 변수는 인스턴스 변수, 멤버 변수, 속성이라고도 한다.

클래스에 의해 생성되는 것은 객체, 그리고 그 클래스에 선언된 변수는 객체 변수라고 생각하면 쉽다.

객체 변수를 만들었으니 이제 객체 변수를 사용해 보자.

먼저 객체 변수는 변수이므로 값을 대입할 수 있을 것이다.

대입하기 전에 객체 변수는 현재 어떤 값을 가지고 있는지 먼저 출력해 보자.

 

객체 변수를 출력하려면 객체 변수에 어떻게 접근해야 하는지를 먼저 알아야 한다.

객체 변수는 다음과 같이 도트연산자(.)를 이용하여 접근할 수 있다.

 

객체.객체변수
cat.name   // 객체: cat, 객체변수: name

 

실제 출력해보기

class Animal {
    String name;
}

public class Sample {
    public static void main(String[] args) {
        Animal cat = new Animal();
        System.out.println(cat.name);
    }
}

 

실행 결과

null

객체 변수로 name 을 선언했지만 아무런 값도 대입을 하지 않았기 때문에 null 이라는 값이 출력된 것이다.

728x90
Comments