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

  1. 인터페이스에 대한 설명으로 틀린 것은 무엇입니까?
    ① 인터페이스는 객체 사용 설명서 역할을 한다.
    ② 구현 클래스가 인터페이스의 추상 메소드에 대한 실체 메소드를 가지고 있지 않으면 추상 클래스가 된다.
    ③ 인터페이스는 인스턴스 필드를 가질 수 있다.
    ④ 구현 객체는 인터페이스 타입으로 자동 변환된다.

    1번 정답

    답 : ③
    인터페이스는 상수 필드과 메소드 필드만 존재할 수 있다.


  2. 인터페이스의 다형성과 거리가 먼 것은?
    ① 필드가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
    ② 매개 변수가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
    ③ 배열이 인터페이스 타입일 경우 다양한 구현 객체를 저장할 수 있다.
    ④ 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다.

    2번 정답

    답 : ④
    구현 객체는 인터페이스를 구현하려고 implements 하고 있다.
    즉 구현 객체를 인터페이스로 변환할 때 자동 타입 변환이 된다.


  3. 다음은 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;
         }
     }
    


  4. 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에서 삭제");
            
         }
     }
    


  5. 다음은 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();
         }
     }
    


🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.

댓글남기기