객체 지향 프로그램(OOP)에서 Parent class의 member 를 child class 에게 물려줄 수 있다
- superclass(parent)
- subclass(child)
subclass 가 superclass 를 선택한다. 즉, subclass 선언 시 어떤 superclass 상속 받을 지 결정한다
class subclass extends superclass { // field // component // method }
code example
class SuperCar { protected String brand = "Bugatti" ; // SuperCar attribute public void feeling() { // SuperCar method System.out.println("Freaking Good!"); } } class Car extends SuperCar { private String modelName = "PenguinCar"; // Car attribute public static void main(String[] args) { // create a myCar object Car myCar = new Car(); // Call the feeling() method from the SuperCar class(superclass) on the myCar object myCar.feeling(); // Display the value of the brand attribute(from the SuperCar class) and the value of the modelName from the Car class System.out.println(myCar.brand + " " + myCar.modelName); } }
Method Overriding Rules
1. parent method 와 동일한 signiture(return type, method name, parameter list) 가져야 한다.
2. 접근 제한을 더 강하게 overriding 할 수 없다.
→ parent method 가 public 접근 제한을 가질 경우, overriding 하는 child method 는 default 나 private 접근 제한으로 수정할 수 없다 (반대는 가능)
→ parent method 가 default 접근 제한을 가질 경우, 재정의된 child method 는 default 나 public 접근 제한을 가질 수 있다.
3. 새로운 Exception을 throws 할 수 없다.
super 는 parent object 참조하므로 parent method 에 직접 접근 가능
class 선언 시 class 앞에 final 붙일 경우 최종 class가 되므로 상속 불가능한 class가 된다
final class 는 superclass가 될 수 없고, 그러므로 subclass 만들 수 없음
public final class classname { ... }
Method 선언 시 final keyword 를 붙일 시 이 method 는 최종 method 이므로 overriding 불가능
superclass 상속해 childclass 선언 시 superclass 에 선언된 final method 는 childclass 에서 재정의 불가능