객체 (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 |