📚 참고
자바의 정석 기초편 (객체지향개념만)

 

 

 

 

 

 

 

 

 

 

단일 상속

 

  • 자바는 단일 상속만을 허용 (C++은 다중상속 허용)
  • Tv에 power 메서드가 있고 DVD에 power 메서드가 있다면 어느 메서드를 상속 받을지 몰라 충돌이 일어난다.

 

class TvDVD extends Tv, DVD {	// 🚩에러 조상은 하나만 허용됨
    // ...
}

 

 

 

 

 

  • 다중 상속의 효과 내기 : 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.

 

class Tv {
    boolean power;
    int channel;
    
    void power() { power = !power; }
    void channelUp() { ++channel; }
    void channelDown() { --channel; }
}
class DVD {
    boolean power;
    
    void power() { power = !power; }
    void play() {}
    void stop() {}
    void rew() {}
    void ff() {}
}
class TvDVD extends Tv {
    DVD dvd = new DVD();
    
    void play() {
    	dvd.play();
    }
    
    void stop() {
    	dvd.stop();
    }
    
    void rew() {
    	dvd.rew();
    }
    
    void ff() {
    	dvd.ff();
    }
}

 

  • Tv 클래스는 상속 받고 DVD 클래스는 포함하여 다중 상속의 효과를 낼 수 있다.

 

 

 

 

 

 

 

Object 클래스

 

  • 모든 클래스의 조상
  • 부모가 없는 클래스는 자동적으로 Object 클래스를 상속 받게 된다.
  • 모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속 받는다.
    • toString(), equals(Object obj), hashCode(), ...

 

// 부모 X
class Tv {
    // ...
}

// Tv 클래스는 컴파일러에 의해 Object 클래스를 상속 받는다.
class Tv extends Object {
    // ...
}

// 부모 O
class SmartTv extends Tv {
    // ...
}

 

 

 

 

 

상속계층도

 

 

 

 

 

 

 

 

 

 

 

'JAVA > 객체지향개념' 카테고리의 다른 글

참조변수 super, 조상의 생성자 super()  (0) 2021.03.17
오버라이딩 (Overriding)  (0) 2021.03.16
클래스 간의 관계 (상속, 포함)  (0) 2021.03.15
상속 (Inheritance)  (0) 2021.03.15
변수 초기화  (0) 2021.03.13