[Java] 객체 / 클래스 / 인스턴스

2023. 1. 12. 19:16기술 창고/Java

728x90
SMALL

객체 (Object)

객체라는 것은 물리적으로 존재하거나 추상적인 존재들 중에서 자신의 속성을 가지고 있으며, 식별할 수 있는 것을 말한다.

예를 들어, 사람이라는 객체는 이름, 나이, 성별 과 같은 속성과 먹다, 자다 등의 동작을 수행한다.

이러한 이름, 나이와 같은 속성을 필드라고 하고, 먹고 자는 동작은 메소드라고 표현한다.

# 예 : 물리적 존재 - 자동차, 컴퓨터, 사람  /  추상적 존재 - 강의, 주문

 

 

 

클래스 (Class)

클래스는 Java에서 객체를 생성하기 위한 설계도이다.

객체가 가지는 속성(필드)과 동작(메소드), 생성자로 이루어져 있다.

 

- 필드 : 객체의 속성으로서 실제 값이 저장되는 변수에 속한다.

- 메소드 : 객체의 동작을 수행하는 블록 혹은 함수이다.

- 생성자 : 객체가 실제로 생성될 때 초기화하는 역할.

 

public class Person{
    //필드(field)
    String name;
    int age;
    char sex;
    
    //생성자(Constructor)
    Person(String name, int age, char sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    
    //메소드(method)
    void eat(){
        System.out.println("밥 머겅..");
    }
    
    void walk(){
        System.out.println("탁탁");
    }
    
    void sleep(){
        System.out.println("쿨쿨...");
    }
}

Person 이라는 사람을 표현한 class 이다. 

사람을 구성하기 위한 설계도로서 필요한 요소들을 살펴보자면,

name, age, sex 와 같은 특정 속성 필드값을 포함하고 있고,

Person() 생성자를 통해 필드로 지정한 속성들을 초기화하며,

eat, walk, sleep 과 같은 함수를 통해 동작을 수행한다.

 

 

 

인스턴스 (Instance)

인스턴스란 객체로 구성된 클래스(설계도)를 통해 생성된 실제 구현체이다.

Java 프로그램이 실행이 되면 클래스는 JVM 메모리의 클래스 영역에 로드되고 이 클래스를 사용하여 Heap 영역에 새로운 인스턴스를 생성한다.

생성된 인스턴스들은 각자 고유의 특성을 가지고 독립적으로 존재한다.

public class PersonTest{
    public static void main(String[] args){
        // 객체 생성 = 인스턴스
        Person p1 = new Person("청년", "20", "M"); 
        Person p2 = new Person("중년", "20", "F");
        
        // 메소드 사용
        p1.eat();
        p1.walk();
        p1.sleep();
        
        p2.eat();
        p2.walk();
        p2.sleep();
    }
}

new Person() 으로 객체를 생성하여 Heap 영역에 할당되고 Person 객체를 참조하는 p1 p2 변수가 생성이 되었다.

 

728x90
반응형
LIST

'기술 창고 > Java' 카테고리의 다른 글

[Java] StringBuilder / StringBuffer  (0) 2023.01.23
[Java] Object 클래스 내의 equals() / hashcode() 함수  (0) 2023.01.23
[Java] Stack / Heap  (0) 2023.01.12
[Java] 자바 컴파일 과정  (0) 2023.01.12
[Java] JVM (Java Virtual Machine)  (1) 2023.01.11