수업(국비지원)/Java
[Java] chap8 : 인터페이스 - Exam1
byeolsub
2023. 4. 15. 23:55
📌 Interface Exam1
package chap8;
/*
* Animal 클래스는 다음과 같다. 구동 클래스를 실행했을때 다음의 결과나
* 나오도록 프로그램 구현하기
* [결과]
* 비둘기는 작은 벌레를 잡아 먹는다.
* 비둘기는 날아 다니는 새입니다.
* 원숭이는 나무에서 열매를 따서 먹는다
* 독수리는 작은 새를 잡아 먹는다.
* 독수리는 엄청 높이 날아 다닌다.
*/
abstract class Animal {
String name;
Animal(String name) {
this.name = name;
}
abstract void eat();
}
class Dove extends Animal implements Flyable{
Dove(){
super("비둘기");
}
void eat() {
System.out.println(name+"는 작은벌레를 잡아 먹는다.");
}
@Override
public void fly() {
System.out.println(name+"는 날아다니는 새입니다.");
}
}
class Monkey extends Animal{
Monkey(){
super("원숭이");
}
void eat() {
System.out.println(name+"는 나무에서 열매를 따서 먹는다.");
}
}
class Eagle extends Animal implements Flyable{
Eagle(){
super("독수리");
}
void eat() {
System.out.println(name+"는 작은 새를 잡아 먹는다.");
}
@Override
public void fly() {
System.out.println(name+"는 엄청 높이 날아다닌다.");
}
}
interface Flyable {
void fly();
}
public class Exam1 {
public static void main(String[] args) {
Animal[] arr = new Animal[3];
arr[0] = new Dove();
arr[1] = new Monkey();
arr[2] = new Eagle();
for(Animal a : arr) {
a.eat();
if(a instanceof Flyable) { //Dove,Eagle 객체는 Flyable 형변환 가능
Flyable f = (Flyable)a;//자동형변환 불가
f.fly();//Flyable 타입의 참조변수로 fly() 호출
}
}
}
}