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 클래스의 매개변수가 있는 생성자 호출
    }