인터페이스에 대한 설명으로 틀린 것은 무엇입니까?
1.인터페이스는 객체사용설명서 역할을한다
2.클래스가 인터페이스의 모든 메소드를 오버라이딩하지않으면 추상클래스가 된다
✔ 3.인터페이스에는 인스턴스 필드를 가질 수 있다 인터페이스는 객체를 만들수 없다.
4.구현객체는 인터페이스 타입으로 자동변환된다
인터페이스 다형성에 대한 설명으로 틀린 것은 무엇입니까?
1.필드가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다. 필드의 다형성
2.매개변수가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다.
3.배열이 인터페이스 타입일 경우 다양한 구현 객체들을 저장할 수 있다.
✔ 4.구현객체를 인터페이스 타입으로 변환하려면 강제타입변환을 해야한다.
자동타입변환.,, 강제타입변환 할 필요가 없다.
다음은 Soudable인터페이스입니다. 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());
}
}
정답 :
public class Cat implements Soundable{
@Override
public String sound() {
return "야옹-ㅅ-m";
}
}
public class Dog implements Soundable{
@Override
public String sound() {
return "멍멍ㅇㅅㅇm";
}
}
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());
}
}
정답 :
public interface DataAccessObject {
public void select();
public void insert();
public void update();
public void delete();
}
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에서 삭제");
}
}
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() 추상 메소드는 객체의 작업을 시작시킵니다.
ActionExample 클래스의 main() 메소드에서 Action의 익명 구현객체를 만들어 다음과 같은 실행 결과가 나올수 있도록 박스안에 들어갈 코드를 작성해보세요.
public interface Action {
void work();
}
정답 :
public class ActionExample {
public static void main(String[] args) {
Action action = new Action() {
@Override
public void work() {
System.out.println("복사를 합니다");
}
};
action.work();
}
}
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 22-07-20 자바 API / Object 클래스 ☑ (0) | 2022.07.20 |
---|---|
[JAVA] 22-07-20 객체비교 equals() ☑ (0) | 2022.07.20 |
[JAVA] 22-07-19 예외(Exception) ☑ (0) | 2022.07.19 |
[JAVA-이것이자바다.7장] 상속 확인 문제 (0) | 2022.07.18 |
[JAVA] 22-07-18 익명 객체 ☑ (0) | 2022.07.18 |