객체 (Object)

객체는 소프트웨어 세계에서 구현할 대상으로, 실세계 영역에 있는 데이터와 기능(행위)을 표현한다.

1
2
3
4
class A {
    int num1, num2;  // 데이터
    public int add(int a, int b); // 기능
}
cs



클래스(Class) 

클래스는 연관된 객체(변수와 메소드)들의 집합으로, 일종의 설계도라 할 수 있다.


1
2
3
4
5
6
class Calculator {
    int num1, num2;
 
    public int add(int num1, int num2) {...};
    public int subtract(int num1, int num2){...};
}
cs

예를 들어 num1, num2, add(), subtract() 는 모두 계산과 연관되어 있다. 이들을 그룹핑한 이름을 뜻하는 Calculator 가 클래스이다.


클래스는 객체의 타입을 정의한다. 즉, 사용자 정의 데이터 타입을 만드는 것과 같다.


class AClass { ... }
cs

AClass a;
cs

예를 들어 int b; 에서 b 변수의 데이터타입이 int형인 것처럼, a 변수의 데이터 타입은 AClass이다.



인스턴스(Instance)

인스턴스는 이 설계도를 보고 구현한 객체이다.


AClass a = new AClass();
cs

new AClass()는 AClass 클래스를 구체적인 물건으로 만드는 명령이다. 이렇게 만들어진 a 를 인스턴스라 한다.


클래스를 바탕으로 객체를 소프트웨어에 실체화하면 인스턴스가 되고, 이 과정을 인스턴스화(instantiation)라고 한다.

실체화된 인스턴스는 메모리에 할당된다.





참고 출처

- 클래스와 인스턴스 그리고 객체: https://opentutorials.org/course/1223/5400

- 객체와 인스턴스 차이: http://cerulean85.tistory.com/149

- 클래스와 인스턴스와 객체: https://opentutorials.org/course/2517/14041

'Java' 카테고리의 다른 글

직렬화 (Serialization)  (0) 2018.08.04
Overloading (오버로딩)  (0) 2018.07.28
Overriding (오버라이딩, 재정의)  (0) 2018.07.28
String, StringBuffer, StringBuilder  (0) 2018.07.17
Scanner와 BufferedReader  (0) 2018.07.17

+ Recent posts