1. 추상화 ( Abstraction )
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것 -> 즉, Class
2. 캡슐화 ( Encapsulation )
- 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶는다.
- Information Hiding : 내부의 동작을 외부로부터 최대한 숨기는 것(Get ,Set 에 관한..)
> Dynamic Binding & Static Binding
- Static Binding
Object의 타입이 컴파일러에 의해 Compile Time 에 결정되고 Stack 영역에 메모리 참조가 일어난다.
< private, final, static >메소드의 경우 모두 정적 바인딩에 해당한다.
- Dynamic Binding
Object의 타입이 Runtime 중에 결정된다.
컴파일러는 컴파일시 어떤 모습인지 기술만 하고 넘어가며, 그 이후, method 호출시(즉, Runtime 시 )
heap영역에 메모리를 참조한다.
=> Dynamic Binding으로 인해서, 상속과 다형성이 가능하다!
3. 상속 ( Inheritance )
- 기존 클래스에 근거하여 새로운 클래스와 행위를 정의할 수 있게 하는 것
- Reusability (재사용성) : 부모가 만들어둔 함수를 자식이 상속받아 그대로 사용할 수 있는 것
- Overriding (재정의) : 상위 클래스에서 정의된 변수/ 메소드를 하위 클래스에서 변경하는 것
4. 다형성 ( Polymorphism )
- 하나의 method나 class가 있을 때 이것들이 다양한 방법으로 동작하는 것
- Overloading : 동일하거나 유사한 일을 수행하는 method가, 전달 받는 매개변수에 따라
조금씩 다른 연산을 해야 하는 경우 사용.
총 5가지의 개념과 대하여 설명한다.
1. 추상화 2.캡슐화 3.상속 4.다형성 5.동적바인딩
2.1정보은닉 3.1재사용성 3.2오버라이딩 4.1오버로딩
'JAVA > OOP' 카테고리의 다른 글
OOP : Polymorphism (상속/인터페이스에 의한 다형성) (0) | 2015.02.04 |
---|---|
OOP : Abstraction (추상화) (0) | 2015.02.04 |
객체지향의 5원칙 (SOLID) (0) | 2015.02.04 |
Class, Instance and Object (0) | 2015.02.04 |
객체지향언어 (Object Oriented Programming Language) (0) | 2015.02.04 |