Inheritance in OOP

1. 상속

객체지향프로그래밍에서 상속의경우 공통된 기능을 여러 객체에 전달하고 싶을때 사용하는 것이 아니다.

추상화에서 구체화를 위해 사용한다.

1.1. 추상의 사전적 의미

추상(抽象 - 뺄추/모양상) : 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용이다.

1.2. 구체의 사전적 의미

구체(具體 - 갖출구/몸체) : 사물이 직접 경험하거나 지각할 수 있도록 일정한 형태와 성질을 갖춤.

2. 추상화와 구체화

  • 추상화된 객체 : 추상체
  • 구체화된 객체 : 구상체

객체간의 관계에서 상위의 것이 하위보다 추상적이어야 한다.

추상화의 예제는 다음과 같다.

2.1. 의미적 추상화

각각 독립적으로 수행가능(둘의 관계는 없다) 하지만 의미만으로 봤을때 추상적일 경우

// 의미적 추상체
class Login {
    void login() {}
}

class KakaoLogin extends Login {
    void login() {}
}

2.2. 추상기능을 가진 객체

정의만 있는 클래스를 override한다.

// 추상기능을 가진 객체
abstract class Login {
    abstract void login();
}

class KakaoLogin extends Login {
    void kakao() {}
    @Override void login() {}
}

2.3. 객체 자체가 추상적

객체 자체가 추상적이고 override한다.

interface Login {
    void login();
}

class KakaoLogin implements Login {
    void kakao() {}
    @Override void login() {}
}

댓글 남기기