[이것이 자바다] 08 인터페이스 확인문제
이 챕터에서 중요한 부분은 다형성, 그리고 추상 클래스와 인터페이스 간의 차이라고 생각한다.
다형성 부분은 지난번 포스트 다형성이란에 정리한 것을 참고하면 될 것 같다.
추상 클래스와 인터페이스 간의 차이는 Programming_Knowledge카테고리에 따로 정리할 예정이다.
이 주제 외에도 JDK8에 들어서 인터페이스에 새로 생긴 기능인 default메소드, static메소드도 알아둘 필요가 있을 것 같다.
확인 문제
인터페이스에 대한 설명으로 틀린 것은?
- 인터페이스는 객체 사용 설명서 역할을 한다.
- 구현 클래스가 인터페이스의 추상 메소드에 대한 실체 메소드를 가지고 있지 않으면 추상 클래스가 된다.
- 인터페이스는 인스턴스 필드를 가질 수 있다.
- 구현 객체는 인터페이스 타입으로 자동 변환된다.
인터페이스는 상수, 메소드만 가질 수 있다.
인터페이스의 다형성과 거리가 먼 것은?
- 필드가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
- 매개 변수가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
- 배열이 인터페이스 타입일 경우 다양한 구현 객체를 저장할 수 있다.
- 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다.
구현 객체는 인터페이스 타입으로 자동 타입 변환된다.
강제 타입 변환을 해야하는 경우는 인터페이스 타입이 구현 객체 타입이 돼야할 때 이다.
다음 Soundable 인터페이스를 통해 ‘야옹’과 ‘멍멍’을 출력하는 클래스를 작성하시오
public interface Soundable{
String sound();
}
public class Cat implements Soundable{
@Override
public String sound(){
return "야옹";
}
}
public class Dog implements Soundable{
@Override
public String sound(){
return "멍멍";
}
}
다음 코드와 아래 출력을 참고해 DataAccessObject 인터페이스를 참조한 OracleDao, MySqlDao 클래스를 작성하시오
Oracle DB에서 검색
Oracle DB에 삽입
Oracle DB를 수정
Oracle DB에서 삭제
MySql DB에서 검색
MySql DB에 삽입
MySql DB를 수정
MySql DB에서 삭제
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());
}
}
public class OracleDao implements DataAccessObject{
public void select(){
System.out.println("Oracle DB에서 검색");
}
public void insert(){
System.out.println("Oracle DB에 삽입");
}
public void update(){
System.out.println("Oracle DB를 수정");
}
public void delete(){
System.out.println("Oracle DB에서 삭제");
}
}
public class MySqlDao implements DataAccessObject{
public void select(){
System.out.println("MySql DB에서 검색");
}
public void insert(){
System.out.println("MySql DB에 삽입");
}
public void update(){
System.out.println("MySql DB를 수정");
}
public void delete(){
System.out.println("MySql DB에서 삭제");
}
}
Action 인터페이스를 활용한 익명 구현 객체를 만들어 아래와 같은 출력이 나오도록 코드를 작성하시오
복사를 합니다.
public interface Action{
void work();
}
public class ActionExample{
public static void main(String[] args){
Action action = new Action(){
public void work(){
System.out.println("복사를 합니다".);
}
};
action.work();
}
}