반응형
Q1. 다음의 클래스 A는 오류를 포함하고 있다. 오류가 발생한 위치와 그 이유를 설명하시오.
class A { //1
int a = 3; //2
fianl int b = 5; //3
A() { //4
a = 7; //5
b = 9; //6
} //7
} //8
오류가 발생한 행 번호 | 오류가 발생한 이유 |
6 | 3행에서 final 필드가 이미 정의되어 있는데 생성자에서 필드를 또 정의하고 있기 때문이다. final 변수는 한 번 값이 정의되면 다시 정의할 수 없다. 수정이 불가하다. |
Q2. 다음은 2개의 메서드를 포함하고 있는 클래스 A를 상속받아 클래스 B를 정의하는 코드로, 오류를 포함하고 있다. 오류가 발생한 위치와 그 이유를 설명하시오.
1class A {
2 void abc() { System.out.println( "클래스 A의 abc() 메서드"); }
3 final void bcd() { System.out.println( "클래스 A의 bcd() 메서드"); }
4}
5class B extemds A {
6 void abc() { System.out.println( "클래스 B의 abc() 메서드"); }
7 final void bcd() { System.out.println( "클래스 B의 bcd() 메서드"); }
8}
오류가 발행한 행 번호 | 오류가 발생한 이유 |
7 | 클래스 A의 bcd() 메서드는 최종 메서드로, 오버라이딩이 불가하다. 따라서 이의 자식 클래스 B는 bcd()를 오버라이딩이 불가하기 때문에 오류가 발생한 것이다. |
Q3. 다음은 A, B, C, D 클래스 간의 상속 구조 를 자바로 표현한 것으로, 오류를 포함하고 있다. 오류가 발생한 위치와 그 이유를 설명하시오.
class A {} //1
class B extends A {} //2
final class C extends B {} //3
final class D extends C {} //4
오류가 발행한 행 번호 | 오류가 발생한 이유 |
4 | 클래스 D는 클래스 C를 상속받는 자식클래스이다. 하지만 클래스 C는 final 지정자가 붙은 최종 클래스로서, 상속이 불가하다. 따라서 클래스 D는 클래스 C를 상속받을 수 없기 때문에 오류가 발생한 것이다. |
Q4. 다음은 추상 메서드 하나를 포함하고 있는 추상 클래스 A를 정의한 것이다. 문법적으로 틀린 부분을 모두 찾아 수정하시오.
class A {
void abc();
}
수정본)
추상 메서드, 추상 클래스임을 명시해 줘야 한다.
추상 클래스는 추상 메서드를 하나라도 포함하면 추상 클래스임을 명시해야 한다.
abstract class A {
abstract void abc();
}
반응형
'JAVA > 자바 완전 정복' 카테고리의 다른 글
자바 완전 정복 13장 연습문제 풀이 (0) | 2022.07.05 |
---|---|
자바 완전 정복 12장 연습문제 풀이 (0) | 2022.07.05 |
자바 완전 정복 10장 연습문제 풀이 (0) | 2022.07.05 |
자바 완전 정복 9장 연습문제 풀이 (0) | 2022.07.05 |
자바 완전 정복 8장 연습문제 풀이 (0) | 2022.07.05 |