定義一個動物類數組,向其中随意添加幾個動物對象(Dog,Cat,Wolf);
有的對象是寵物類(Dog,Cat),它們有play方法; 也有非寵物類(Wolf)是沒有play方法的
建立一個接口play,讓具有play方法的動物類(Dog,Cat)實作它;
在周遊動物數組的時候來個if條件判斷就可以篩選出來了(注意引用時類型轉換)
package classes;
//抽象動物類
abstract class Animal implements Eat{
//抽象方法:吃
public abstract void eat();
}
//接口:寵物
interface Pet{
//抽象方法:玩
void play();
}
//接口:吃
interface Eat{
void eat();
}
//狗類 繼承 動物類 , 實作 寵物接口
class Dog extends Animal implements Pet{
//覆寫父類方法:吃
public void eat(){
System.out.println("Dog eat Bones");
}
//實作接口方法: 玩
public void play(){
System.out.println("Play with Dog");
}
}
//貓類 繼承 動物類 , 實作 寵物接口
class Cat extends Animal implements Pet{
//覆寫父類方法:吃
public void eat(){
System.out.println("Cat eat fish");
}
//實作接口方法: 玩
public void play(){
System.out.println("Play with Cat");
}
}
//狼類 繼承 動物類
class Wolf extends Animal{
//覆寫父類方法:吃
public void eat(){
System.out.println("Wolf eat meat");
}
}
public class Test10{
public static void main(String[] args){
//1.定義一個Animal類型的數組as,存儲多個不同子類對象
Animal[] as = new Animal[] {new Dog(),new Cat(),new Wolf()};
//2.調用as數組中所有動物的eat方法
for( int i = 0; i < as.length ; i++ ){
if(as[i] instanceof Eat){
Eat e1 = (Eat)as[i];
e1.eat();
}
}
//3.統計輸出數組中寵物的個數
int sumPet = 0;
for( int i = 0; i < as.length ; i++ ){
if( as[i] instanceof Pet )sumPet++;
}
System.out.println(sumPet);
//4.調用數組as中所有寵物的play方法
for( int i = 0; i < as.length ; i++ ){
if( as[i] instanceof Pet ){
Pet dp = (Pet)as[i];
dp.play();
}else System.out.println();
}
}
}