JAVA
1번
💡 다음 코드는 오류를 포함하고 있는데 오류가 발생하는 위치와 이유를 설명하시오
1
2
3
4
5
6
7
8
| class A {
int a = 3;
final int b = 5;
A() {
a = 7;
b = 9;
}
}
|
final로 선언한 필드는 값을 변경할 수 없다
2번
💡 다음 코드는 오류를 포함하고 있는데 오류가 발생하는 위치와 이유를 설명하시오
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class A {
void abc() {
System.out.printin("클래스 A의 abc() 메서드");
}
final void bcd() {
System.out.printIn("클래스 A의 bcd() 메서드");
}
}
class B extends A {
void abc() {
System.out.println("클래스 B의 abc() 메서드");
}
final void bcd() {
System.out.print1n("클래스 B의 bcd() 메서드");
}
}
|
final은 오버라이딩을 할 수 없다
3번
💡 다음 코드는 오류를 포함하고 있는데 오류가 발생하는 위치와 이유를 설명하시오
1
2
3
4
| class A {}
class B extends A {}
final class C extends B {}
final class D extends C {}
|
final클래스인 C는 상속이 불가능하다
4번
💡 다음은 추상 메서드를 가지고 있는 A의 클래스를 정의한 코드다 잘못된 부분을 수정하시오
1
2
3
| class A {
void A();
}
|
1
2
3
| abstract class A {
abstract void abc();
}
|
5번
💡 다음 코드는 오류를 포함하고 있는데 오류가 발생하는 위치와 이유를 설명하시오
1
2
3
4
5
6
7
| abstract class A {
abstract void abc();
}
class B extends A{
}
|
추상 클래스 A를 상속받아 클래스 B도 추상 메서드 abc가 상속되었기에 추상 메서드 abc를 오버라이딩 하거나 abstract를 붙여 B도 추상 클래스로 만든다
6번
💡 출력에 맞게 코드를 추가하시오
1
2
3
4
5
6
7
8
9
10
| abstract class A {
abstract void abc();
}
class B extends A{
// 코드 추가
}
A a = new B();
a.abc(); // 안녕하세요
|
1
2
3
| void abc() {
System.out.println("안녕하세요");
}
|
7번
💡 익명 이너클래스를 사용해 출력에 맞게 코드를 추가하시오
1
2
3
4
5
| abstract class A {
abstract void abc();
}
// 코드 추가
a.abc(); // 반갑습니다
|
1
2
3
4
5
| A a = new A() {
void abc() {
System.out.println("반갑습니다");
}
}
|
8번
💡 추상 클래스의 객체를 생성하는 방식들에 장단점을 설명하시오
추상 클래스를 일반 클래스로 상속해서 객체 생성
장점: 여러개의 객체 생성시 생성한 클래스의 생성자로 바로 생성 가능 단점: 추가적으로 클래스를 정의해야 함
익명 이너 클래스 사용
장점: 추가적인 클래스 정의가 필요없음 단점: 여러개의 객체 생성시에 동일한 메서드 오버라이딩이 필요함
9번
💡 각 부분에 들어갈 키워드를 순서대로 적으시오
1
2
3
4
5
6
7
8
9
10
11
12
| 클래스 키워드1 클래스 {
}
인터페이스 키워드2 인터페이스 {
}
클래스 키워드3 인터페이스 {
}
인터페이스 키워드4 클래스 {
}
|
extends
extends
implements
불가능
10번
💡 클래스 D에 인터페이스 A,B 클래스 C를 상속시키는 코드를 완성하시오
1
2
3
4
| interface A {}
interface B {}
class C {}
class D {}
|
1
2
3
4
| interface A {}
interface B {}
class C {}
class D extends C implements A, B {}
|
11번
💡 다음 코드는 오류를 포함하고 있는데 오류가 발생하는 위치와 이유를 설명하시오
1
2
3
4
5
6
7
8
| interface A {
void abc();
}
class B implements A {
void abc() {
//...
}
}
|
1
2
3
4
5
| class B implements A {
public void abc() {
//...
}
}
|
public을 붙여준다
12번
💡 출력에 맞게 코드를 추가하시오
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| interface A {
default void abc() {
System.out.printin("A 인터페이스의 abc)"):
}
}
class B implements A {
public void abc() {
// 이 부분
System.out.printh("B 클래스의 abc"):
}
}
B b = new B();
b.abc();
// 실행결과
// A 인터페이스의 abc
// B 클래스의 abc
|