Home JAVA 추상 클래스, 인터페이스 파트 수행 정리
Post
Cancel

JAVA 추상 클래스, 인터페이스 파트 수행 정리

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번

💡 추상 클래스의 객체를 생성하는 방식들에 장단점을 설명하시오

  1. 추상 클래스를 일반 클래스로 상속해서 객체 생성

    장점: 여러개의 객체 생성시 생성한 클래스의 생성자로 바로 생성 가능 단점: 추가적으로 클래스를 정의해야 함

  2. 익명 이너 클래스 사용

    장점: 추가적인 클래스 정의가 필요없음 단점: 여러개의 객체 생성시에 동일한 메서드 오버라이딩이 필요함

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
1
A.super.abc();
This post is licensed under CC BY 4.0 by the author.