Inheritance & @Override

River·2023년 3월 27일
0

Java

목록 보기
2/2

Inheritance

객체 지향 프로그램(OOP)에서 Parent class의 memberchild class 에게 물려줄 수 있다

  • superclass(parent)
  • subclass(child)

subclass 가 superclass 를 선택한다. 즉, subclass 선언 시 어떤 superclass 상속 받을 지 결정한다

class subclass extends superclass {
// field
// component
// method
}
  • Benefit
    • 코드 중복 감소
    • Class 수정 최소화 -> 유지 보수 시간 단축

  • 상속을 한다고 해서 Superclass 의 All fields, methods 를 subclass 가 물려받는 것은 아님
    • superclass 에서 private 접근 제한 갖는 fields, methods 는 상속 제외
    • Also, superclass & subclass 가 다른 package 에 존재할 시 default 접근 제한을 갖는 fields, methods 도 상속 제외
  • 다중 상속 불가능
    • extends 뒤에는 only one superclass

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);
    }
}
  • 접근 제한자 (1->4 접근 제한 강화)
  1. public
    • 접근 불가 class: 없음
  2. protected
    • 접근 불가 class: subclass 아닌 다른 package 에 소속된 class
  3. default
    • 접근 불가 class: 다른 package 에 소속된 class
  4. private
    - 접근 불가 class: 모든 외부 class

@Override

  • 상속된 method 가 subclass 에서 부적합 할 경우, subclass 에서 method 를 재정의(수정)해야한다
    Method Overriding 기능
  • method 가 overriding 되었다면 parent object method 는 숨겨짐
    • child object 에서 method 호출하면 overriding 된 child method 호출

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 할 수 없다.


Parent Method 호출(super)

  • subclass 가 super class method 를 overriding 하면 superclass method 숨겨지고 overriding 된 child method 만 사용된다
  • But, subclass 내부에서 overriding 된 superclass method 를 호출해야되는 상황이라면 명시적으로 super keyword 를 붙여서 parent method 호출 가능

    super 는 parent object 참조하므로 parent method 에 직접 접근 가능


Final Keyword

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 에서 재정의 불가능

profile
Passionate about My Dreams

0개의 댓글