[Java] 오버라이딩 (Overriding), Super

CountryGirl·2023년 6월 12일
0

Java

목록 보기
11/18
post-thumbnail

📌 오버라이딩 (Overriding)

부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것
(부모 클래스의 메서드를 그대로 사용해도 되지만 자식 클래스의 상황에 맞게 변경해야하는 경우 오버라이딩을 한다.)

👉 오버라이딩 조건 👈
1. 선언부가 부모 클래스의 메서드와 일치해야한다.
2. 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

public class Car {

    String company; 
    private String model; 
    private String color; 
    private double price; 

    double speed;  
    char gear = 'P'; // 기어의 상태: P,R,N,D
    boolean lights; 

    (...)

    public void horn() {
        System.out.println("빵빵");
    }

}

-------

public class SportsCar extends Car{
    String engine;
    public void booster() {
        System.out.println("부앙~");
    }

    (...)

    @Override
    public void horn() {
        booster();
    }
}

---

public class Main {
    public static void main(String[] args) {
        
        Car car = new Car();
        car.horn(); // OUTPUT: 빵빵

        SportsCar sportsCar = new SportsCar();

        // 오버라이딩한 horn() 메서드 호출
        sportsCar.horn(); // OUTPUT: 부앙~

    }
}

📌 Super

부모 클래스의 멤버를 참조할 수 있는 키워드
(this 친구)

  • 객체 내부 생성자 및 메서드에서 부모 클래스의 멤버에 접근하기 위해 사용된다.
  • 자식 클래스 내부에서 선언한 멤버와 부모 클래스에서 상속받은 멤버와 이름이 같을 경우 이를 구분하기 위해서 사용된다.
// 부모 클래스 Car
String model; // 자동차 모델
String color; // 자동차 색상
double price; // 자동차 가격

----
// 자식 클래스 SportsCar
String model = "SantaFe"; // 자동차 모델
String color = "Black"; // 자동차 색상
double price = 30000000; // 자동차 가격

----
public void setCarInfo(String model, String color, double price) {
    super.model = model; // model은 부모 필드에 set
    super.color = color; // color는 부모 필드에 set
    this.price = price; // price는 자식 필드에 set
}

자식 클래스의 메서드를 호출하면 super 키워드로 접근한 부모 클래스이 model, color 필드에 매개변수의 값이 저장되고, this 키워드로 접근한 자식 클래스의 price 필드에 매개변수 값이 저장된다.

😎 super()

부모 클래스의 생성자를 호출할 수 있는 키워드이다.

  • 객체 내부 생성자 및 메서드에서 해당 객체의 부모 클래스의 생성자를 호출하기 위해 사용된다.
  • 자식 클래스의 객체가 생성될 때 부모 클래스들이 모두 합쳐져서 하나의 인스턴스가 생성된다.
    🚨 주의 🚨
  1. 부모 클래스의 멤버들의 초기화 작업이 먼저 수행되어야한다.
  2. 자식 클래스의 생성자에서는 부모 클래스의 생성자가 호출되어야한다.
  3. 부모 클래스의 생성자는 가장 첫 줄에 호출되어야한다. (this와 매한가지)
profile
💻🌾시골소녀의 엉망징창 개발 성장일지🌾💻 (2023.05.23 ~)

0개의 댓글

관련 채용 정보