본문 바로가기
솔루션모음/파워자바 중간점검 Exercise Lab

[파워자바] 12장 중간점검문제 Exercise Lab Exercise 솔루션 답지

by 이얏호이야호 2023. 9. 16.

중간점검문제

p.269

1. 주로 상속 계층에서 추상적인 개념을 나타내기 위한 용도로 사용

2. 추상 클래스는 일반 메소드도 포함한다

3. 반드시 추상 메소드를 구현해야 한다.

 

p.277

1. 객체와 객체 사이의 상호 작용을 위하여 사용

2. 하나의 클래스는 여러 개의 인터페이스를 동시에 구현할 수 있다.

3. 선언할 수 없다.

 

p.279

1. 인터페이스도 클래스와 마찬가지로 타입이라고 생각할 수 있다. 따라서 참조 변수를 정의하는데 사용될 수 있다

2. 여러 클래스에서 사용되는 상수를 정의하면 그 인터페이스를 구현하는 클래스들은 자동적으로 인터페이스에 정의된 상수들을 공유하게 된다.

3. 인터페이스를 사용하여 다중 상속의 효과를 낸다.

 

p.287

1. 수퍼 클래스 참조 변수가 서브 클래스 객체를 참조하는 것은 가능하지만, 서브 클래스의 참조 변수가 수퍼 클래스의 객체를 참조하는 것은 문법적인 오류이다.

2. A instanceof B 일때, 객체 A가 클래스 B로 생성되었으면 true를 반환

3. 동일한 수퍼 클래스에서 상속된 서브 클래스의 객체들을 하나의 타입으로 취급할 때 유용하다

4. 수퍼 클래스 타입으로 선언하는 것이 좋다

 

p.289

1. 내부클래스는 하나의 클래스 안에 다른 클래스를 정의하는 것으로 클래스의 모든 멤버를 참조할 수 있다.

2. 내부 클래스는 private로 선언된 필드도 접근이 가능하다.

 

p.291

1. new 키워드 다음에 수퍼 클래스 이름이나 인터페이스 이름을 적어준다

2. 무명 클래스를 정의하면 클래스 정의와 객체 생성을 동시에 할 수 있다.

3. new Object() { ... }

 

 

Lab

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.Timer;

 

public class CallbackTest {

 

public static void main(String[] args) {

 

ActionListener listener = new MyClass();

Timer t = new Timer(1000, listener);

t.start();

for (int i = 0; i < 1000; i++) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

}

}

 

class MyClass implements ActionListener {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

System.out.println("beep");

 

}

}

 

Exercise

1.

class AudioSystem extends SoundSystem implements MP3playable, TurnTableplayable

{

...

}

 

2. 인터페이스 안에는 추상 메소드만 정의할 수 있다.

public interface MyInterface {

void MyMethod(int value);

}

 

3.

abstract class Bird

{

abstract public void sound();

}

class Dove extends Bird

{

public void sound()

{

System.out.println("coo coo");

}

}

 

 

4.

public interface Edible {

//boolean amount; 필드는 정의할 수 없다.

final int TYPE=10;

public void eat(); // { }; 추상 메소드만 정의할 수 있다.

};

public class Sandwitch implements Edible {

public void eat() { }

}

 

5. (2)

6. (3)

7. a, b, c, d

9.

(1) 수퍼 클래스 참조 변수는 서브 클래스 객체를 가리킬 수 있다.

(2) 가능하다.

(3) 오타! 다음과 같은 문장은 적법한가? 그 이유는?

Point3D p = new Point2D();

-> 적법하지 않다. 수퍼 클래스 객체를 서브 클래스 참조 변수로 가리킬 수 없다.

 

(4)

class Point2D{

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

private int x;

private int y;

}

class Point3D extends Point2D{

public int getZ() {

return z;

}

 

public void setZ(int z) {

this.z = z;

}

 

private int z;

}

 

댓글