Virtual/Abstract/Interface

HEP·2023년 1월 3일
0

OOP & Design Pattern

목록 보기
4/5

virtual

  • 본문을 정의할 수 있다.
  • 반드시 구현할 필요가 없다.
  • 자식 클래스에서 재정의를 해도 부모 클래스의 속성이나 메서드 등을 호출할 수 있다.
  • virtual 클래스의 instance 생성은 직접 자신/자식 클래스를 통해서도 instance 생성이 가능하다.

abstract

  • 본문을 정의할 수 없다.
  • 일반 클래스의 virtual 속성/메서드를 abstract 로 재정의가 가능하다.?
  • abstract 키워드로 표시된 클래스는 자식 클래스의 생성자를 통해서만 사용해서만 개체(Instance) 생성이 가능하다.
  • abstract 클래스에서 virtual 메서드 가능하다(= 반드시 구현할 필요는 없다)
  • abstract 메서드는 abstract 클래스에서만 사용 가능하다. (= abstract 메서드는 반드시 구현되어야 한다.)
  • Is-A
  • 슈퍼클래스의 기능을 이용/확장하기 위해 사용
  • 다중 상속의 모호성 때문에 하나만 상속 가능

공통점

  • 자식클래스에서 메서드 구현시에는 override 키워드 필요.

Interface

  • Has-A
  • 해당 interface를 구현하는 class들에 대해 동일한 메서드를 강제하기 위해 존재.
  • 상속관계에 얽메이지 않고 공통기능이 필요할때 사용한다
  • extends와 다르게 여러개를 implements 할 수 있다.
  • 파생 클래스를 통한 다형성으로만 개체 생성 가능(interface classe 직접 instance 불가능). 혹은 Type.forName으로 클래스를 call 할 수도 있음.

abstract

profile
셀포합니다

0개의 댓글