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

Lee Seung Jae·2021년 5월 23일
0

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

1. 인터페이스에 대한 설명으로 틀린 것은?

답 - 3. 인터페이스는 인스턴스 필드를 가질 수 있다.
해설 - 인터페이스는 상수 필드와 메소드 필드만 존재할 수 있다.

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

답 - 4. 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다.
해설 - 애초에 구현 객체는 인터페이스를 구현하려고 implements를 하고있기 때문에 인터페이스 타입에 매칭이 된다. 그래서 강제 타입 변환을 할 필요가 없다.

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

public interface Soundable{
    String sound();
}

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

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

답 -

Cat.java

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

Dog.java

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

해설 - Example의 printSound에서 System.out.println(soundable.sound()); 을 수행하기 때문에 문자열만 return 해주면 야옹과 멍멍을 출력해주기 때문에 String 반환값에 야옹과 멍멍을 할당해주었다.

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

답 -

DataAccessObject.java

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

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

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

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

OracleDao.java

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

MySqlDao.java

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

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

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

    @Override
    public void delete() {
        System.out.println("mysql에서 삭제");
    }
}
  1. 다음은 Action 인터페이스이다. work()추상 메소드는 객체의 작업을 시작시킨다.
public interface Action{
    void work();
}

ActionExample 클래스의 main() 메소드에서 Action의 익명 구현 객체를 만들어 다음과 같은 실행 결과가 나올 수 있도록 박스 안에 들어갈 코드를 작성하세요. 실행결과 ==> 복사를 합니다.

public class ActionExample{
    public static void main(String[] args){
        Action action = //빈칸
        
        action.work();
    }
}

답 -

new Action() {
    public void work() {
        System.out.println("복사를 합니다.");
    }
}
profile
💻 많이 짜보고 많이 경험해보자 https://lsj8367.tistory.com/ 블로그 주소 옮김

0개의 댓글