이것이 자바다 8장 확인문제
-
인터페이스에 대한 설명으로 틀린 것은 무엇입니까?
① 인터페이스는 객체 사용 설명서 역할을 한다.
② 구현 클래스가 인터페이스의 추상 메소드에 대한 실체 메소드를 가지고 있지 않으면 추상 클래스가 된다.
③ 인터페이스는 인스턴스 필드를 가질 수 있다.
④ 구현 객체는 인터페이스 타입으로 자동 변환된다.1번 정답
답 : ③
인터페이스는 상수 필드과 메소드 필드만 존재할 수 있다. -
인터페이스의 다형성과 거리가 먼 것은?
① 필드가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
② 매개 변수가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
③ 배열이 인터페이스 타입일 경우 다양한 구현 객체를 저장할 수 있다.
④ 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다.2번 정답
답 : ④
구현 객체는 인터페이스를 구현하려고 implements 하고 있다.
즉 구현 객체를 인터페이스로 변환할 때 자동 타입 변환이 된다. - 다음은 Soundable 인터페이스입니다. sound() 추상 메소드는 객체의 소리를 리턴합니다.
1 2 3
public interface Soundable { String sound(); }
SoundableExample 클래스에서 printSound() 메소드는 Soundable 인터페이스 타입의 매개 변수를 가지고 있습니다. main() 메소드에서 printSound() 를 호출할 때 Cat와 Dog 객체를 주고 실행하면 각각 “야옹”과 “멍멍”이 출력되도록 Cat 과 Dog 클래스를 작성해보세요.
1 2 3 4 5 6 7 8 9 10
public class SoundableExample { private static void printSound(Soundable soundable) { System.out.println(soundable.sound()); } public static void main(String[] args) { printSound(new Car()); printSound(new Dog()); } }
3번 정답
답 :
1 2 3 4 5 6 7
public class Cat implements Soundable { @Override public String sound() { String catSound = "야옹" return catSound; } }
1 2 3 4 5 6 7
public class Dog implements Soundable { @Override public String sound() { String dogSound = "멍멍" return dogSound; } }
- DaoExample 클래스의 main() 메소드에서 dbWork() 메소드를 호출할 때 OracleDao와 MySqlDao 객체를 매개값으로 주고 호출했습니다. dbWork() 메소드는 두 객체를 모두 매개값으로 받기 위해 DataAccessObject 타입의 매개 변수를 가지고 있습니다. 실행 결과를 보고 DataAccessObject 인터페이스와 OracleDao, MySqlDao 구현 클래스를 각각 작성해보세요.
1 2 3 4 5 6 7 8 9 10 11 12 13
public class DaoExample { public static void dbWork(DataObject dao) { dao.select(); dao.insert(); dao.update(); dao.delete(); } public static void main(String[] args) { dbWork(new OrableDao()); dbWork(new MySqlDao()); } }
실행 결과 Orable DB에서 검색
Orable DB에서 삽입
Oracle DB를 수정
Orable DB에서 삭제
Mysql DB 에서 검색
Mysql DB에 삽입
Mysql DB에 수정
Mysql DB에서 삭제4번 정답
답 :
1 2 3 4 5 6
public interface DataAccessObject{ void select(); void insert(); void update(); void delete(); }
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
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에서 삭제"); } }
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
public class MySqlDao implements DataAccessObject { @Override public void select() { System.out.println("MySql DB에서 검색"); } @Override public void insert() { System.out.println("MySql DB에 삽입"); } @Override public void update() { System.out.println("MySql DB를 수정"); } @Override public void delete() { System.out.println("MySql DB에서 삭제"); } }
- 다음은 Action 인터페이스입니다. work() 추상 메소드는 객체의 작업을 시작시킵니다.
1 2 3
public interface Action { void work(); }
ActionExample 클래스의 main() 메소드에서 Action 의 익명 구현 객체를 만들어 다음과 같은 실행 결과가 나올 수 있도록 박스 안에 들어갈 코드를 작성해보세요.
1 2 3 4 5 6 7 8
public class ActionExample { public static void main(String[] args) { Action action = /* 입력부분 */ action.work(); } }
실행 결과 복사를 합니다. 5번 정답
답 :
1 2 3 4 5 6 7 8 9 10 11
public class ActionExample { public static void main(String[] args) { Action action = new Action() { @Override public void work() { System.out.println("복사를 합니다."); } }; action.work(); } }
🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.
댓글남기기