본문 바로가기

Study/자바의정석.연습문제풀기

자바의정석_연습문제_19.12.02.MON

Ch7. 객체지향프로그램2 (Object-oriented Programming II)

ㅡ연습문제 7.5 ~ 7.19 (7단원. 29번까지 존재)

 

[ 7.5 ]

내 답) Tv 클래스에선 기본생성자를 생성하지만 Product에는 기본생성자가 없음 (메소드생성자가 있을 경우 별도의 기본생성자를 자동으로 생성해주지 않으므로 수동으로 설정해야함)

해답풀이)) Tv클래스의 인스턴스를 생성할 대, 생성자 Tv() 가 호출되고 Tv()는 조상 생성자 super()를 호출한다. 실제 코드에서는 super()를 호추하는 곳이 없지만 컴파일러가 자동적으로 추가해준다. 그래서 컴파일을 하고 나면 자동으로

          Tv() {}  -->    Tv() {

                               super();   //Product()를 호출   }

으로 변경된다.

  추가된 super()는 조상클래스인 Product의 기본 생성자 Product()를 호출하는 것인데, Product클래스에는 기본 생성자 Product()가 정의되어 있지 않다. 정의되어 있지 않은 생성자를 호출하니까 에러가 발생하는 것이다. Product클래스에는 이미 Prodct(int price)라는 생성자가 정의되어 있기 때문에 컴파일러가 자동적으로 추가해주지도 않으므로 직접 Product클래스에 Product() {}를 넣어주면 문제가 해결된다.

 

[ 7.7 ]

[ 7.8/ 7.9 ]

[ 7.10 ]

[ 7.11 ]

[ 7.12 /  7.13 ]

[ 7. 14 ]

[ 7. 15 / 7. 16 ]

[ 7. 17 ]

[ 7. 18 ]

 

[ 7. 19 ]