본문 바로가기

JAVA/OOP

OOP : Abstraction, Encapsulation, Inheritance and Polymorphism

반응형

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오버로딩

반응형