cha_eyoon
2024. 7. 4. 16:50
✅ 상속?
자 다음의 세 가지 질문에 대해 본인의 생각을 답할 수 있다면
Java에서 '상속'이 어떤 개념인지 잘 이해하고 있다고 생각한다.
Q1. 상속 관계를 결정하는 클래스는 누구인가요?
Q2. 아래 네모는 객체입니다. A,B 중 누가 부모이고, 자식일까요?
Q3. 생성자도 상속되는 걸까요?
💭우선 내 생각은 다음과 같다.
✔️ 상속 관계를 결정하는 클래스는 자식 클래스 ⇒ ‘extends 부모 클래스’로 선언
자식이 부모를 결정한다니... 신기한 자바의 세상🌏
✔️ A가 부모이고 B가 자식이다.
자식은 부모의 모든 기능을 사용할 수 있을 뿐만 아니라 추가로 자신만의 기능을 만들어 사용할 수 있다.
즉, 상속은 코드의 재사용성과 확장성을 높이기 위해 사용된다.
✔️ 생성자는 상속되지 않는다..!! 하단에 그 예외를 코드로 작성해보았다.
public class Main {
public static void main(String[] args) {
Phone g = new Galaxy("samsung");
g.printLogo();
}
public abstract class Phone {
private String name;
public Phone(){};
public Phone(String name){
this.name = name;
}
public abstract void printLogo();
}
public class Galaxy extends Phone {
public Galaxy(){
super(); //phone class에 있는 기본 생성자 상속
}
public void printLogo(){
System.out.println("*** Samsung ***");
}
}
위의 코드를 보면 Galaxy는 Phone의 매개변수가 있는 생성자를 상속받지 못해 Main.java 실행 시 오류가 발생한다.
해결하려면 아래와 같이 Phone 클래스의 매개변수가 있는 생성자를 호출해야 한다.
// 매개변수가 있는 생성자 정의
public Galaxy(String name){
super(name); // Phone 클래스의 매개변수가 있는 생성자 호출
}