상속(inheritance)
- 하나의 클래스에서 다른 클래스의 속성과 기능을 그대로 물려 받는 것을 의미한다.
- 보통 물려주는 쪽을 부모 클래스라 부르고 물려 받는 쪽을 자식 클래스라고 이야기한다.
- 물려 주는 쪽(부모 클래스)의 기능과 속성을 자식클래스는 상속 받아 사용이 가능하며 이때 자식 클래스는 부모클래스의 속성과 기능을 정의하지 않아도 된다.
- 상속에서 연속적으로 클래스들이 상속을 할 경우 맨 마지막의 자식 클래스는 맨 상위 부모의 클래스부터의 모든 기능과 속성을 전부 사용할 수 있다.
- 자바에서는 다중 상속이 지원되지 않는다.
생성자의 상속
- 기본적으로 생성자는 상속이 되지 않는다.
- 생성자는 참조가 되어 부모 클래스에서 디폴트 생성자만 사용하거나 매개변수가 없는 명시적 생성자만 있을 경우 이 경우에는 자식클래스에서 자동으로 참조가 가능(자동으로 디폴트 생성자를 생성하기 때문)하다.
- 하지만 매개변수가 있는 명시적으로 선언된 생성자가 부모 클래스에 존재한다면 자식 클래스는 super를 통해 해당 생성자를 자신의 생성자에서 선언하지 않을 경우 에러가 발생한다.
- 부모 클래스에서 생성자를 명시적으로 선언하여 매개변수를 가진 생성자를 쓸 경우에는 반드시 자식 클래스에서 해당 생성자를 참조할 수 있도록 명시적으로 선언 해주어야 한다.
오버라이드
- 자식 클래스에서 부모클래스에 정의되어 있던 기능을 같은 이름의 기능으로 선언해서 덮어 씌우는 것을 뜻함
- 메모리에서는 실제 해당 기능을 검색시 자식 쪽에서 해당 기능을 호출을 가로채서 부모까지 기능에 대한 검색을 막는 형태의 메커니즘을 가짐
- 만약 강제로 부모 클래스의 기능을 접근하고 싶다면 super을 활용하여 부모 객체의 접근이 가능함.