본문 바로가기
멘토씨리즈 자바/예제

[응용문제] 추상클래스와 인터페이스

by Hwanii_ 2023. 5. 30.
728x90

SECTION 12 - 추상클래스와 인터페이스

330 ~ 331 page.

 

1. 다음 빈칸에 알맞은 단어를 작성해 보세요.

 

1) 구현 내용이 없이 비어있는 메서드를 _____ (이)라고 부릅니다.

 

2) 위 메서드를 선언할 때는 _____ 키워드를 사용해야 합니다.

 

3) 이러한 메서드를 1개 이상 가지고 있는 클래스를 _____ 클래스라고 부릅니다.

 

=>

 

1) 추상메서드

2) abstract

3) 추상

 

2. 다음 코드는 컴파일 에러가 발생합니다. 컴파일 에러가 발생하는 곳을 모두 찾아 수정해 보세요.

 

package section12;

abstract class Bike {
	int wheel;
    
    Bike(int wheel) {
    	this.wheel = wheel;
    }
    
    void info() {
    	sysout("이 자전거는" + wheel + 발 자전거입니다.);
    }
}

class ChildBike extends Bike {
	ChildBike(int wheel) {
    }
}

class PRACTICE_12_02 {
	public static void main(String[] args) {
    	Bike b = new Bike(2);
        
        ChildBike cb = new ChildBike(4);
        cb.info();
    }
}

=>

1)

class Bike는 추상클래스 이기 때문에,

void info() 메서드는 abstract가 붙어야 한다.

추상 메서드는 자손 클래스에서 해당 메서드를 오버라이딩 해서 사용하는게 강제기 때문에,

기능 구현을 하지 않는다.

따라서 메서드 바디를 버린다.  == { } 를 버린다.

 

2)

자손클래스인 ChildBike extends Bike는

조상클래스의 멤버변수를 초기화 해야 하기 때문에 super() 메서드를 반드시 호출한다.

 

조상클래스의 생성자는 디폴트 생성자가 없기 때문에, (인자 1개짜리 생성자 밖에 없음)

자손클래스의 생성자 안에 super(wheel); 을 적어줘야 한다.

 

3)

class Bike는 추상클래스라 객체 생성이 불가능 하다.

main() 에 Bike b = new Bike(2); 를 없앤다.

 

 

4)

cb.info()를 하기 위해서는 class ChildBike 에 추상메서드의 info() 메서드를

오버라이딩 해서 사용 해야 한다.

 

class ChildBike extends Bike {
	void info() {
    	sysout("이 자전거는 " + wheel + "발 자전거 입니다.);

 

3. 다음 문장이 맞으면  O표, 틀리면 X표 하세요.

 

1) 추상 클래스는 자식 클래스들이 상속받아 구현합니다. (___)

2) 인터페이스는 다른 클래스 코드들과의 사이에서 중간 매개체 역할을 합니다. (___)

3) 인터페이스 안에서 상수를 선언할 때, final을 명시하지 않으면 syntax error가 발생합니다. (___)

4) 추상 클래스와 인터페이스의 추상 메서드는 구현부가 있으면 안됩니다. (___)

5) 클래스 간 다중 상속이 불가능한 것처럼 인터페이스도 다중 상속이 불가능합니다. (___)

 

=>

 

O

?

?

?

X

 

4. 2번 예제 코드에서 Bike 클래스 안에 아래 메서드를 추가했습니다. ChildBike 클래스를 어떻게 수정해야 할까요 ?

 

abstract int getWheel();

 

=>

int getWheel() {

	실행문
}

 

 

 

반응형

'멘토씨리즈 자바 > 예제' 카테고리의 다른 글

[응용문제] 파일 입출력  (0) 2023.05.28
[응용문제] 스레드  (0) 2023.05.28
[응용문제] 다형성과 타입 변환  (0) 2023.05.22
[응용문제] 상속  (0) 2023.05.21
[응용문제] 생성자  (0) 2023.05.21