본문 바로가기
프로그래밍/javacscript

상속 : extends와 implements / 호출 : super()

by 한코코 2022. 6. 16.

extends와 implements의 차이

extends

부모의 메서드를 그대로 사용할 수 있으며 오버라이딩(재정의)를 하지 않아도 됨.

변수까지 모조리 사용이 가능하나 다중상속은 안된다.

일반 클래스와 abstract을 상속할때 사용한다.

class가 class를 상속받을때는 extends, class가 interface를 상속받을때는 implements

interface가 interface를 상속받을때는 extends, interface는 class를 상속받을 수 없다. 

class extends classA (O)
class implements interfaceA (O)

interfaceE extends interfaceP (O)
interfaceR extends classA (X)
interfaceR implements classA (X)

 

implements

부모의 메서드를 그대로 사용할 수 있으며 오버라이딩(재정의)를 반드시 해줘야한다.

설계/분류의 목적이 더 강한거라서 재정의를 해줘야한단다.. 잘 모르겠지만 그렇댄다.

대신 다중상속이 가능하다.

interface를 상속할때 사용한다.

 

 

 

 

 

 

super()

상위(부모)객체의 함수를 호출할때 사용된다.

constructor(생성자)에서 super()하나만 사용되어야한다.

-> 생성자 바깥이나 생성자 내부에 있는 함수에서는 사용할 수 없다.

this 키워드 이전에 호출되어야 한다.

 -> 참조할 데이터를 가져오는게 super인데 호출되지 않으면 참조할 데이터가 없으니까 this를 사용할 수가 없다.

댓글