728x90
1. 다음 코드는 컴파일 에러가 발생합니다. 컴파일 에러가 발생하는 곳을 모두 찾아 수정해 보세요.
package section11;
class Car{ }
class Bus extends Car { }
class SchoolBus extends Bus { }
class OpenCar extends Car { }
class SportsCar extends OpenCar { }
public class PRACTICE_11_01 {
public static void main(String[] args) {
Car c1 = new Car();
Bus b1 = new Bus();
SchoolBus sb = new Car();
Car c2 = new OpenCar();
OpenCar oc = new SportsCar();
Bus b3 = new OpenCar();
Bus b4 = new SportsCar();
}
}
더보기
총 4개 발생
SchoolBus sb = new Car(); // 자식은 부모의 집이 될 수 없음.
OpenCar oc = new SportsCar(); // 자식은 부모의 집이 될 수 없음.
Bus b3 = new OpenCar(); // 서로 상속 관계가 아님.
Bus b4 = new SportsCar(); // 서로 상속 관계가 아님.
2. 다음 설명에 해당하는 용어는 무엇입니까 ?
- 부모 클래스에게 상속받은 메서드를 재정의하여 자식 클래스용 메서드를 구현하고 자식 객체를 통해 메서드를 호출할 때는 부모의 메서드가 아니라 자식의 메서드가 호출된다.
- 오버라이딩
- 오버로딩
- 오버플로우
더보기
1. 오버라이딩
상속 관계에서 메소드를 재정의 하는 것은 오버라이딩이다.
3. 다음과 같은 결과가 나오도록 아래 클래스를 구현해 주세요.
- class Speaker
- class RedSpeaker
- class BlueSpeaker
package section11;
class Person {
Speaker speaker;
Person(Speaker speaker) {
this.speaker = speaker;
}
void turnOn() {
System.out.println(speaker.getName() + "이 켜졌습니다.");
}
}
public class PRACTICE_11_03 {
public static void main(String[] args) {
Speaker s1 = new RedSpeaker();
Person p1 = new Person(s1);
p1.turnOn();
Speaker s2 = new BlueSpeaker();
Person p2 = new Person(s2);
p2.turnOn();
}
}
// 출력 결과
// 빨간 스피커가 커졌습니다.
// 파란 스피커가 켜졌습니다.
더보기
class Speaker {
private String name;
Speaker(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class RedSpeaker extends Speaker {
RedSpeaker() {
super("빨간 스피커");
}
}
class BlueSpeaker extends Speaker {
public BlueSpeaker() {
super("파란 스피커");
}
}
728x90
'JAVA > JAVA 멘토시리즈' 카테고리의 다른 글
[JAVA 멘토시리즈] 응용 문제 풀이 (컬렉션 프레임워크) (0) | 2023.06.01 |
---|---|
[JAVA 멘토시리즈] 응용 문제 풀이 (추상 클래스) (0) | 2023.05.30 |
[JAVA 멘토시리즈] 응용 문제 풀이 (상속) (0) | 2023.05.25 |
[JAVA 멘토시리즈] 응용 문제 풀이(생성자) (0) | 2023.05.24 |
[JAVA 멘토시리즈] 응용 문제 풀이 (메소드) (0) | 2023.05.24 |