本程序綜合練習繼承、抽象類、抽象方法、多態、接口的使用,這之後就開始學習集合、異常。
package com.test.code;
/*
* Terrestrial 接口 帶腿的陸生動物
*/
interface Terrestrial{
public int getLegNum();
}
/*
* 動物類-抽象
*/
abstract class Animal{
String name;
/*
* 構造方法
*/
public Animal(String name){
this.name = name;
}
/*
* 動物叫聲明爲抽象方法
*/
public abstract void shout();
}
/*
* 貓類
*/
class Cat extends Animal implements Terrestrial{
int legNum = 0;
/*
* 構造方法
*/
public Cat(String name, int legNum) {
super(name);
this.legNum = legNum;
}
//得到腿數
public int getLegNum(){
return legNum;
}
/*
* 重寫父類Animal 的 shout()方法;
*/
public void shout(){
System.out.println("喵喵喵...");
}
}
/*
* 鴨類
*/
class Duck extends Animal implements Terrestrial{
int legNum = 0;
/*
* 構造方法
*/
public Duck(String name, int legNum){
super(name);
this.legNum = legNum;
}
//得到腿數
public int getLegNum(){
return legNum;
}
@Override
public void shout() {
System.out.println("嘎嘎嘎...");
}
}
/*
* 海豚類
*/
class Dolphin extends Animal{
public Dolphin(String name){
super(name);
}
public void shout(){
System.out.println("海豚音...");
}
}
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 創建 Animal []對象數組
*/
Animal animals[] = new Animal[3];
animals[0] = new Cat("白老貓", 4);
animals[1] = new Duck("黃小鴨", 2);
animals[2] = new Dolphin("海小豚");
System.out.println("動物名\t"+"腿條數"+"\t動物叫");
System.out.println("****************************");
for(int i=0; i<animals.length; i++){
int legNum = 0;
if(animals[i] instanceof Terrestrial){
Terrestrial t = (Terrestrial) animals[i];
legNum = t.getLegNum();
}
System.out.print(animals[i].name+"\t"+legNum+"\t");
animals[i].shout();
/* 頭一回寫了下面的語句,原來不可以這樣...
* System.out.print(animals[i].shout()) error;
* 提示錯誤:類型 PrintStream 中的方法 print(boolean)對於參數(void)不適用
* */
}
}
}
/*******************
動物名 腿條數 動物叫
****************************
白老貓 4 喵喵喵...
黃小鴨 2 嘎嘎嘎...
海小豚 0 海豚音...
*******************/