본문 바로가기
코딩/java

[java] 9. 상속

by lazy_nyoung 2023. 2. 5.

상속(Inheritance)

자바에는 상속이라는 개념이 존재한다.

부모클래스(상위클래스/슈퍼클래스)  와 자식클래스(하위클래스/서브클래스)rk dlTdmau, 

자식이 상속받고 싶은 부모 클래스를 정해서 필드와 메소드를 물려받는다고 생각하면 된다.

 

단, 접근제어자가 private 인 필드와 메소드는 상속이 불가하고, 패키지가 다를 경우에는 default인 경우에도 상속이 불가하다.

 

중복된 코드를 줄이고, 유지보수에 편리. 통일성과 다형성 구현을 위해 사용된다. (자식 클래스 인스턴스 생성이 효율적)

 

 


방법 ( 선언 ) - extends

상속받을 자식 클래스 뒤에 extends (부모클래스) 를 적어주면 된다.

 

[부모클래스]

public class parentClass {};

[자식클래스]

public class childClass extends parentClass{};

 

자바에서는 다중 상속을 받는 것은 불가능하다. (extends 는 한번만 가능)

하나의 클래스는(하위) 단일 상속만 받을 수 있다. 부모 클래스는 여러 자식 클래스들에게 상속이 가능하다.

 

[가능]

public class childClass1 extends parentClass{};
public class anotherClass extends parentClass{};

[불가능]

public class childClass extends parentClass, anotherClass{};

 


부모 생성자의 호출 (super)

자바에서는 자식 객체 생성 시, 부모 객체를 먼저 생성 후, 자식 객체가 생성이 된다.

'명시적인 생성자 선언' 이 없다면, 기본생성자가 생성이 되는데, 부모 객체를 생성할 경우, 자식클래스의 생성자 선언 내부 맨 첫 줄에 super(); 가 생성된다. 

매개변수가 있는 명시적 생성자의 경우 자식클래스 생성자 내부 첫줄에 super(매개값, 매개값, ...); 선언을 꼭 해주어야 한다.

*super = 부모클래스(객체)