클래스, 객체 , 인스턴스 개념
2020. 11. 9. 10:49ㆍBackend/☕️ Java
클래스(class)
- 객체를 만들어내기 위한 설계도, 틀
- 연관된 변수와 메서드의 집합
객체(object)
- 소프트웨어 상에 구현할 대상
- 클래스라는 '설계도, 틀'에서 선언된 모양으로 생성된 실체
- 모든 객체는 클래스로부터 생성된다.
인스턴스(instance) <속성(변수), 기능(메서드) ⊂ 인스턴스>
- 클래스를 바탕으로 소프트웨어에 구현된 '변수'와 '기능'의 집합 (구체적 실체)
- 즉, 객체를 소프트웨어에 실체화 하면 '인스턴스'라 칭함 => 인스턴스 ⊂ 객체 (인스턴스를 포함)
- 고유한 상태를 가지기 위해 존재, 속성(멤버 변수)과 기능(메서드)이라 생각하자
객체 vs 인스턴스
- 클래스의 타입으로 선언됐을 때 객체라 부르고, 해당 객체가 메모리에 할당되어 실제로 사용될 때 인스턴스라 부른다.
(하지만 엄격하게 객체와 인스턴스를 나누긴 어렵다.)
// class
public class Person {
...
}
// 객체와 인스턴스
public class Main {
public static void main(String[] args) {
Person female, male; // 객체
// 인스턴스화
female = new Person(); //female은 Person 클래스의 '인스턴스' (female 객체를 메모리에 할당)
male = new Person(); //male은 Person 클래스의 '인스턴스' (male 객체를 메모리에 할당)
}
}
인스턴스화
- 클래스를 인스턴스로 변환
- 범주나 개념(클래스)으로부터 실재하는 객체를 만드는 과정
- 클래스 내의 객체를 정의하고 이름을 붙인 다음, 메모리를 할당하는 등의 작업으로 인스턴스를 만드는 것을 의미
Person female = new Person(); //female은 Person 클래스의 '인스턴스' (female 객체를 메모리에 할당)
Person male = new Person(); //male은 Person 클래스의 '인스턴스' (male 객체를 메모리에 할당)
- 연산자 new에 의해 Person 클래스의 인스턴스가 메모리의 빈 공간에 생성된다.
- 대입 연산자 '=' 에 의해 생성된 인스턴스의 주소값이 참조변수 male, female이 참조변수 Person에 저장(인스턴스화)
- 즉, 참조변수 male, female에 의해 인스턴스의 '멤버변수'와 '메서드'를 사용할 수 있게 된다.
예시
public class this_prac {
public static void main(String[] args) {
class ThisEx01{
int kor, eng;
ThisEx01 (int kor, int eng){
this.kor = kor;
this.eng = eng;
}
}
ThisEx01 obj1 ; // ThisEx01 클래스의 객체: obj1
obj1 = new ThisEx01(90, 100); // 객체의 인스턴스화
System.out.println(obj1.kor);
System.out.println(obj1.eng);
}
}
참고
'Backend > ☕️ Java' 카테고리의 다른 글
다양한 의존객체 주입 (constructor-arg, property) (0) | 2020.11.19 |
---|---|
Spring container Lifecycle (0) | 2020.11.18 |
Spring 기본 환경 세팅/ Maven이란? (0) | 2020.11.16 |
예시를 통한 추상 클래스 이해 (0) | 2020.11.16 |
call by reference, call by value (0) | 2020.11.09 |