2014년 1월 5일 일요일

[7-5]

class Product {
int price;
int bonusPoint;

Product() { } // 내가 작성한 답 == 모범답안

/*
Product 클래스를 상속받은 Tv클래스에서는 특별히 조상클래스의 초기화를 
                하지 않으면 기본'super()'이다.
그런데 Product 클래스의 생성자는 매개변수가 존재하는것 뿐이므로, 
                기본생성자로는 초기화할 수 없다.

--------------------모법답안 해설----------------------------
Tv 클래스의 인스턴스를 생성할 때, 생성자 Tv()가 호출되고 조상 생성자                             super() 를 호출한다.
컴파일러가 자동적으로 추가해준다......
이 super() 는 조상 클래스인 Product 의 기본생성자 Product() 을 
                        의미하는데 클래스에는
이미 생상자 'Product(int price)' 가 정의되어 있기 때문에 컴파일러가 
                        자동적으로 추가해 주지도 않으므로
직접 Product클래스에 Product() { } 를 넣어주면 문제가 해결된다.
----------------------------------------------------------------
*/
Product(int price) {
this.price = price;
bonusPoint = (int)(price/10.0);
}
}

class Tv extends Product {
Tv() { }

public String toString() {
return "Tv";
}
}





class Exercise7_5 {
public static void main(String[] args) {
Tv t = new Tv();
}
}

댓글 없음:

댓글 쓰기