본문 바로가기
Dev/Java

[Java] 자바의 정석 기초편 ch7-5,6 단일 상속, Object 클래스

by 코딩삐약 2022. 4. 25.

ch7-5 단일 상속 (Single Inhertiance)

- Java는 단일 상속만을 허용한다. (C++은 다중상속 허용) = 하나의 부모만 상속

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 { // Tv 상속관계
	DVD dvd = new DVD();// DVD 포함관계
    // 객체 사용 (기능을 호출해서 사용)
    void play() { 
    	dvd.play();
    }
    
    void stop() { 
    	dvd.stop();
    }
    
    void rew() { 
    	dvd.rew();
    }
    
    void ff() { 
    	dvd.ff();
    }

 

ch7-6 Object클래스 - 모든 클래스의 조상

- 부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.

- 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.

toString(), equals(Object obj), hashCode(), ... <- 9장에서 자세히

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

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

// 컴파일 후
class Tv extends Object { // 컴파일러가 자동추가
	// ...
}

class SmartTv extends Tv {
	//...
}

- 상속 계층도 SmartTv -> Tv -> Object 모든 클래스의 최고 조상

class Circle extends Object { //부모 클래스가 없으면 Object 클래스 자동으로 상속
	MyPoint p;
	int r;
}

public class InheritanceTest {
	public static void main(String[] args) {
    	Circle c = new Circle();
        System.out.println(c.toString()); // "Circle@15db9742" 
        System.out.println(c); // 참조변수 c만 출력해도 toString() 사용한 결과가 같다.
	}
}