상속이란?
: 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 있고, 자식 클래스는 부모 클래스를 선택해서, 그 부모의 멤버를 상속받아 그대로 쓸 수 있게 하는 것
- 상속의 대상
: 자식클래스가 부모 클래스로부터 상속을 받게 되면 부모 클래스의 필드와 메서드를 물려받게 된다.
단, 접근제어자가 private을 갖는 필드나 메소드는 상속이 불가하고, 패키지가 다를 경우 접근제어가자 default인 경우에도 상속이 불가능하다.
- 상속의 장점
: 중복된 코드를 줄일 수 있고, 유지보수가 편리하며, 통일성이 있고 다형성을 구현할 수 있다.
- 상속의 방법(선언) - extends
: 상속받을 자식 클래스 뒤에 extends 키워드를 사용하고 부모 클래스를 적어주면 됨.
ex) class Child extends Parent { .. }
: 자바에서는 자식 클래스가 여러부모로 부터 다중 상속을 받는 것은 불가능 하다. 1개의 부모 클래스로부터의 단일 상속만 허용된다. 하지만 부모 클래스는 여러개의 자식 클래스에게 상속이 가능하다.
- 부모 생성자의 호출 - super()
: 자바에서는 자식 객체를 생성하면, 부모 객체를 먼저 생성한 후, 자식 객체가 그 다음에 생성됨.
: 객체는 생성자를 호출해야만 생성되는데 "명시적인 생성자 선언"이 없다면, 컴파일러는 알아서 기본 생성자를 생성하여 호출함
: 부모 클래스엔 명시적 생성자 선언이 없고, 자식 클래스에는 명시적 생성자 선언이 존재한다고 가정하면, 부모 클래스의 생성자 선언은 자식 클래스의 생성자 선언 내부 맨 첫줄에 super(); 라고 생성됨.
부모의 기본 생성자 선언을 포함해서 명시적 생성자 선언이 없었으므로 컴파일러가 super();를 알아서 생성하고 그 super();는 부모 클래스의 기본 생성자를 컴파일러가 호출하는 것.
※ "super"키워드는 부모 클래스(객체)를 나타내는것으로 기억하면 좋음 !!
※ 반드시 자식 생성자 내부의 첫줄에 super(매개1,매개2,...)같이 선언해야함 !!