[5장 1번]
다음 클래스에 대해 물음에 답하라.
class A {
private int a;
public void set(int a) { this.a = a; }
}
class B extends A {
protected int b, c;
}
class C extends B {
public int d, e;
}
1. A objA = new objA(); 에 의해 생성되는 객체 objA의 멤버들을 모두 나열하라.
- private int a;
- public void set(int a) { this.a = a; }
2. B objB = new objB(): 에 의해 생성되는 객체 objB의 멤버들을 모두 나열하라.
- private int a;
- public void set(int a) { this.a = a; }
- protected int b, c;
3. C objC = new objC(); 에 의해 생성되는 객체 objC의 멤버들을 모두 나열하라.
- private int a;
- public void set(int a) { this.a = a; }
- protected int b, c;
- public int d, e;
4. 클래스 D를 다음과 같이 작성하였을 때, 오류가 발생하는 라인을 모두 찾아라.
class D extends C {
public void f() {
a = 1; // (1)
set(10); // (2)
b = 20; // (3)
d = 30; // (4)
}
}
- 1. a = 1; _ a는 private 멤버이므로, 접근할 수 없다.
[5장 2번]
자바의 모든 클래스가 반드시 상속받게 되어 있는 클래스는?
1. Object 2. Java 3. Class 4. Super
- 1. Object _ 자바에서 모든 클래스는 Object 클래스를 자동으로 상속받도록 컴파일 된다.
[5장 3번]
상속을 이용하여 다음 클래스들을 간결한 구조로 재작성하라.
class SharpPencil { // 샤프펜슬
private int width; // 펜의 굵기
private int amount; // 남은 량
public int getAmount() { return amount; }
public void setAmount (int amount) { this.amount = amount; }
}
class Ballpen { // 볼펜
private int amount; // 남은 량
private String color; // 볼펜의 색
public int getAmount() { return amount; }
public void setAmount (int amount) { this.amount = amount; }
public String getColor() { return color; }
public void setColor(String color) { this.color = color; }
}
class FountainPen { // 만년필
private int amount; // 남은 량
private String color; // 볼펜의 색
public int getAmount() { return amount; }
public void setAmount (int amount) { this.amount = amount; }
public String getColor() { return color; }
public void setColor(String color) { this.color = color; }
public void refill (int n) { setAmount(n); }
[풀이]
class Pen { // 모든 펜의 공통 속성
private int amount; // 남은 량
public int getAmount() { return amount; }
public void setAmount (int amount) { this.amount = amount; }
}
class SharpPencil extends Pen{ // 샤프펜슬
private int width; // 펜의 굵기
}
class Ballpen extends Pen { // 볼펜
private String color; // 볼펜의 색
public String getColor() { return color; }
public void setColor(String color) { this.color = color; }
}
class FountainPen extends Ballpen{ // 만년필
public void refill (int n) { setAmount(n); }
}
[5장 4번]
다음 중 설명에 적절한 단어를 기입하라.
자바에서 상속받는 클래스를 서브 클래스(sub class) 라고 부르며, extends 키워드를
이용하여 상속을 선언한다. 상속받은 클래스에서 상속해준 클래스의 멤버를 접근할 때
super 키워드를 이용한다. 한편, 객체가 어떤 클래스의 타입인지 알아내기 위해서는
instanceof 연산자를 이용하며, 인터페이스는 클래스와 달리 interface 키워드를
이용하여 선언한다.
[5장 5번]
상속에 관련된 접근 지정자에 대한 설명이다. 틀린 것은?
1. 슈퍼 클래스의 private 멤버는 서브 클래스에서 접근할 수 없다.
2. 슈퍼 클래스의 protected 멤버는 같은 패키지에 있는 서브 클래스에서만 접근할 수 있다.
3. 슈퍼 클래스의 public 멤버는 모든 다른 클래스에서 접근할 수 있다.
4. 슈퍼 클래스의 디폴트 멤버는 같은 패키지에 있는 모든 다른 클래스에서 접근 가능하다.
- 2. 슈퍼 클래스의 protected 멤버는 같은 패키지에 있는 서브 클래스에서만 접근할 수 있다. _ 슈퍼 클래스의 protected 멤버는 다른 패키지의 서브 클래스에서도 접근이 가능하다.
[5장 6번]
다음 빈칸에 적절한 한 줄의 코드를 삽입하라.
class TV {
private int size;
public TV(int n) { size = n; }
}
class ColorTV extends TV {
private int colors;
public ColorTV(int colors, int size) {
super(size);
this.colors = colors;
}
}
[5장 7번]
상속에 있어 생성자에 대해 묻는 문제이다. 실행될 때 출력되는 내용은 무엇인가?
class A {
public A() { System.out.println("A"); }
public A(int x) { System.out.println("A: " + x); }
}
class B extends A {
public B() { super(100); }
public B(int x) { System.out.println("B: " + x); }
}
public class Example {
public static void main(String[] args) {
B b = new B(11);
}
}
A
B: 11
'Solution_ > 명품 java' 카테고리의 다른 글
[명품 JAVA] 5장 연습문제(8~16) (상속) (0) | 2019.04.20 |
---|---|
[명품 JAVA] 5장 실습문제(1~8) (상속) (2) | 2019.04.14 |
[명품 JAVA] 4장 실습문제 (클래스와 객체) (14) | 2019.04.10 |
[명품 JAVA] 4장 연습문제 (클래스와 객체) (12) | 2019.04.08 |
[명품 JAVA] 3장 실습문제 (반복문과 배열 그리고 예외 처리) (16) | 2019.03.25 |
댓글