본문 바로가기

알고리즘/기타퀴즈

이것이 자바다 8장 인터페이스 Quiz

반응형

안녕하세요. pitang입니다.

8장 총 5문제 풀어보겠습니다.

 

1번

인터페이스에 대한 설명으로 틀린 것은 무엇입니까?

1. 인터페이스는 객체 사용 설명서 역할을 한다.

2. 구현 클래스가 인터페이스의 추상 메서드에 대한 실체 메서드를 가지고 있지 않으면 추상 클래스가 된다.

3. 인터페이스는 인스턴스 필드를 가질 수 있다.

4. 구현 객체는 인터페이스 타입으로 자동 변환된다.

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
3번
인터페이스는 상수와 메소드만을 구성 멤버로 가진다. 
인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없다.

 

2번

인터페이스의 다형성과 거리가 먼 것은?

1. 필드가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.

2. 매개 변수가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.

3. 배열이 인터페이스 타입일 경우 다양한 구현 객체를 저장할 수 있다.

4. 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다.

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
4번
구현 객체를 인터페이스 타입으로 변환할 때는 자동 타입 변환이고
구현 객체가 인터페이스 타입으로 변환되어 있는 상태에서는 강제 타입 변환이 가능하다.

 

3번

다음은 Soundable 인터페이스입니다. sound() 추상 메서드는 객체의 소리를 리턴합니다.

SoundableExample 클래스에서 printSound() 메서드는 Soundable 인터페이스 타입의 매개변수를 가지고 있습니다.

main() 메서드에서 printSound() 호출할 때

Cat과 Dog 객체를 주고 실행하면 각각 "야옹"과 "멍멍"이 출력되도록 Cat과 Dog 클래스를 작성해보세요.

public interface Soundable {
	String sound();
}
public class SoundableExample {
	
    private static void printSound(Soundable soundable) {
    	System.out.println(soundable.sound());
    }
    
    public static void main(String[] args) {
    	printSound(new Cat());
        printSound(new Dog());
    }

}

<console>
야옹
멍멍

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Cat implements Soundable {
	@Override
	public String sound() {
    	return "야옹";
    }
}

public class Dog implements Soundable {
	@Override
    public String sound() {
    	return "멍멍";
    }
}

 

4번

DaoExample 클래스의 main() 메서드에서 dbWork() 메서드를 호출할 때

OracleDao와 MySqlDao 객체를 매개 값으로 주고 호출했습니다.

dbWork() 메서드는 두 객체를 모두 매개값으로 받기 위해 DataAccessObject 타입의 매개 변수를 가지고 있습니다.

실행 결과를 보고 DataAccessObject 인터페이스와 OracleDao, MySqlDao 구현 클래스를 각각 작성해보세요.

public class DaoExample {
	
    public static void dbWork(DataAccessObject dao) {
    	dao.select();
        dao.insert();
        dao.update();
        dao.delete();
    }
    
    public static void main(String[] args) {
    	dbWork(new OracleDao());
        dbWork(new MySqlDao());
    }
    
}

<console>
Oracle DB에서 검색
Oracle DB에 삽입
Oracle DB를 수정
Oracle DB에서 삭제
MySql DB에서 검색
MySql DB에 삽입
MySql DB를 수정
MySql DB에서 삭제

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public interface DataAccessObject {

	void select();
	void insert();
	void update();
	void delete();
	
}
public class OracleDao implements DataAccessObject{

	@Override
	public void select() {
		System.out.println("Oracle DB에서 검색");
	}

	@Override
	public void insert() {
		System.out.println("Oracle DB에 삽입");
	}

	@Override
	public void update() {
		System.out.println("Oracle DB를 수정");
	}

	@Override
	public void delete() {
		System.out.println("Oracle DB에서 삭제");
	}

}
public class MySqlDao implements DataAccessObject{

	@Override
	public void select() {
		System.out.println("MySqlDao DB에서 검색");
	}

	@Override
	public void insert() {
		System.out.println("MySqlDao DB에 삽입");
	}

	@Override
	public void update() {
		System.out.println("MySqlDao DB를 수정");
	}

	@Override
	public void delete() {
		System.out.println("MySqlDao DB에서 삭제");
	}

}

 

5번

다음은 Action 인터페이스입니다. work() 추상 메서드는 객체의 작업을 시작시킵니다.

ActionExample 클래스의 main() 메서드에서 Action의 익명 구현 객체를 만들어 

다음과 같은 실행 결과가 나올 수 있도록 박스 안에 들어갈 코드를 작성해보세요.

public interface Action {

	void work();
	
}
public class ActionExample {

	public static void main(String[] args) {
		
		Action action = //코드작성
		action.work();
		
	}
	
}

<console>
복사를 합니다.

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class ActionExample {

	public static void main(String[] args) {
		
		Action action = new Action() {

			@Override
			public void work() {
				System.out.println("복사를 합니다.");
			}
			
		};
		action.work();
		
	}
	
}

 

감사합니다.

 

*m1 맥북을 사용 중입니다.*

728x90
반응형