[JAVA] 클래스와 객체

2022. 9. 5. 18:13

클래스와 객체의 정의

클래스(Class) : 객체를 정의하는 설계도나 틀 
객체(Object) : 클래스에 정의된 것이 메모리에 할당된 것 

클래스와 객체의 관계를 설계도와 제품으로 비유할 수 있다.

 

제품의 설계도가 제품 자체가 될 수 없는 것처럼 클래스도 객체 그 자체가 되지는 못한다.

(TV 설계도 - TV의 관계로 이해하면 이해하기 쉽다.)

 

인스턴스

객체와 같이 자주 쓰는 용어로 인스턴스(Instance)가 있는데 인스턴스는 클래스로부터 만들어진 객체를 인스턴스라고 한다. 즉, 객체는 인스턴스를 포괄하는 넓은 의미를 가지고 인스턴스는 어떤 클래스로부터 생성된 것인지 구체적인 의미를 갖고 있다.

인스턴스(Instance) : 클래스로부터 만들어진 객체
인스턴스화(Instantiate) : 클래스로부터 객체를 만드는 과정

 


객체의 필드와 메서드

객체는 일반적으로 필드와 메서드를 구성요소로 갖고 이러한 필드와 메서드를 객체의 멤버라고 한다.

필드 : 객체의 속성. ex) 종류, 크기, 나이 
메서드 : 객체의 기능. ex) 먹기, 자기

보통 객체의 속성을 멤버 변수, 객체의 기능을 메서드라 부른다
class Dog {
    String breed; //변수
    String size;  //변수
    int age;      //변수

    //메서드
    public void sleep() {
        System.out.println("zzzZZZ");
    }

    //메서드
    public void eat() {
        System.out.println("yum yum");
    }
}

객체의 생성

객체의 생성은 new 키워드를 사용하여 생성한다.

Dog dog = new Dog();

이때 dog라는 참조 변수는 new Dog()으로 생성된 인스턴스의 메모리 주소를 참조한다.

1. 참조 타입이 Dog인 dog 참조 변수를 선언하면 dog 변수가 Stack area에 저장된다.

 

2. new 연산자로 인해 Dog 클래스로부터 만들어진 인스턴스가 Heap area에 생성된다. 

 

3. 참조변수 dog은  Heap area에 생성된 Dog 인스턴스의 주소를 저장한다.

 

객체의 사용

객체의 멤버에 접근하기 위해 마침표(.)를 사용한다.

public class DogTest {
    public static void main(String[] args) {
        Dog dog = new Dog();

        dog.breed = "beagle";
        dog.size = "small";
        dog.age = 2;

        dog.sleep(); //zzzZZZ
        dog.eat(); //yum yum
    }
}

참조 변수 dog으로 해당 인스턴스의 변수에 값을 저장할 수 있고 메서드 또한 같은 방법으로 호출할 수 있다. 

참고로 객체의 멤버변수는 getter()와 setter()를 사용해서 다룬다. 보통 객체의 멤버변수에 직접적인 접근을 막기 위해서 private 접근 제어자를 사용하지만 예시에서는 사용하지 않았다.

 

BELATED ARTICLES

more