티스토리 뷰

이것이 자바다 1권 8장 확인문제 

 

 

1. 인터페이스에 대한 설명으로 틀린 것은 무엇입니까?
3번 - 인터페이스는 인스턴스 필드를 가질 수 있다.
--> 인터페이스는 상수와 메소드만을 가진다.

 

 

2. 인터페이스의 다형성과 거리가 먼 것은?
: 4번 - 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다. 
--> 구현 객체를 인터페이스 타입으로 변환 시 자동 타입 변환이 된다. 

 

 

3. 다음은 Soundable 인터페이스입니다. sound() 추상 메소드는 객체의 소리를 리턴합니다.
SoundableExample 클래스에서 printSound() 메소드는 Soundable 인터페이스 타입의 매개변수를 가지고 있습니다. main() 메소드에서 printSound()를 호출할 때 Cat과 Dog 객체를 주고 실행하면 각각 "야옹"과 "멍멍"이 출력되도록 Cat과 Dog 클래스를 작성해보세요.

 

package com.self;

public interface Soundable {

	String sound();
	
}
package com.self;

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());
	}

}
package com.self;

public class Cat implements Soundable {

	@Override
	public String sound() {
		String catSound = "야옹";
		return catSound;
	}

}
package com.self;

public class Dog implements Soundable {

	@Override
	public String sound() {
		String dogSound = "멍멍";
		return dogSound;
	}

}

 

 

4. DaoExample 클래스의 main() 메소드에서 dbWork() 메소드를 호출할 때 OracleDao와 MySqlDao 객체를 매개값으로 주고 호출했습니다. dbWork() 메소드는 두 객체를 모두 매개값으로 받기 위해 DataAccessObject 타입의 매개 변수를 가지고 있습니다. 실행 결과를 보고 DataAccessObject 인터페이스와 OracleDao, MySqlDao 구현 클래스를 각각 작성해보세요.

 

package com.self;

public interface DataAccessObject {
	
	void select();
	void insert();
	void update();
	void delete();

}
package com.self;

public class Oracle 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에서 삭제");
		
	}

}
package com.self;

public class MySqlDao implements DataAccessObject{

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

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

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

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

}
package com.self;

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 Oracle());
		dbWork(new MySqlDao());
	}

}

 

 

 

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

 

package com.self;

public interface Action {
	void work();
}
package com.self;

public class ActionExample {

	public static void main(String[] args) {
		Action action = new Action() {
			public void work() {
				System.out.println("복사를 합니다.");
			}
		};

		action.work();

	}

}

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30