抽象的Animal 類
創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,德陽機(jī)房服務(wù)器托管,德陽機(jī)房服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。
public abstract class Animal {
public abstract void sound();
}
CanFly接口
public interface CanFly {
public void fly();
}
Bird類繼承自Animal類,并有屬性表示鳥類年齡。并實(shí)現(xiàn)父類中的sound方法
使鳥類實(shí)現(xiàn)接口Canfly,并實(shí)現(xiàn)其中的fly方法,在方法中向控制臺(tái)打印輸出:鳥在飛。。。
public class Bird extends Animal implements CanFly {
private int age;
@Override
public void sound() {
// TODO Auto-generated method stub
System.out.println("bird sound");
}
public void fly() {
// TODO Auto-generated method stub
System.out.println("鳥在飛。。。 ");
}
}
編寫飛機(jī)類Plane,使飛機(jī)類實(shí)現(xiàn)接口Canfly,并實(shí)現(xiàn)其中的fly方法,在方法中向控制臺(tái)打印輸出:飛機(jī)在飛。。。
public class Plane implements CanFly {
public void fly() {
// TODO Auto-generated method stub
System.out.println("飛機(jī)在飛。。。 ");
}
}
編寫測(cè)試類,測(cè)試類中有main方法,還有l(wèi)etFly方法,打印輸出什么事物在飛方法頭部為:public static void letFly(Canfly c)
還有l(wèi)etSound方法,打印輸出什么動(dòng)物在叫,在方法中要判斷,這個(gè)對(duì)象是否是動(dòng)物,如果是動(dòng)物才讓叫。方法頭部為:public static void letSound(Animal a)
在main方法中創(chuàng)建鳥對(duì)象和飛機(jī)對(duì)象,在分別調(diào)用letFly和letSound方
public class Test {
public static void letFly(CanFly c)
{
c.fly();
}
public static void letSound(Animal a)
{
a.sound();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Bird b=new Bird();
Test.letFly(b);
Test.letSound(b);
Plane p=new Plane();
Test.letFly(p);
// Test.letSound(p);//飛機(jī)沒有繼承自Animal類所以不能調(diào)用該方法
}
}
以上全部按照你要求寫的
public?class?Animal
{
public?String?name;
public?int?legs;
public?String?sound;
public?Animal(String?name,?int?legs,?String?sound){
this.name?=?name;
this.legs?=?legs;
this.sound?=?sound;
}
public?String?toString(){
return?name?+?"\t"?+?legs?+?"\t"?+?sound;
}
public?static?void?main(String[]args)
{
//init
Animal[]?animals?=?new?Animal[3];
animals[0]?=?new?Animal("加菲貓",4,?"喵喵喵");
animals[1]?=?new?Animal("唐小鴨",2,?"嘎嘎嘎");
animals[2]?=?new?Animal("海豚奇奇",0,?"海豚音");
byte[]?b?=?new?byte[1024];
String[]?names?=?{"貓",?"鴨子",?"海豚"};
int[]?legs?=?{4,2,0};
String?name;
int?leg;
String?sound;
while(true){
try{
System.out.println("動(dòng)物名稱\t腿的條數(shù)\t動(dòng)物叫");
for?(int?i?=?0;?i??animals.length;?i++)?{
System.out.println(animals[i].toString());
}
System.out.println("0-修改,其他數(shù)字-退出");
int?n?=?System.in.read(b);
String?s?=?new?String(b,0,n);
int?oper?=?Integer.parseInt(s.trim());
if?(oper?!=?0)?{
System.out.println("退出!");
return;
}
for?(int?i?=?0;?i??animals.length;?i++)?{
System.out.println("請(qǐng)輸入"+names[i]+"的名字");
n?=?System.in.read(b);
s?=?new?String(b,0,n);
name?=?s.trim();
if?(name.length()?==?0)?{
throw?new?Exception(names[i]+"必須有名字");
}
System.out.println("請(qǐng)輸入"+names[i]+"的腿數(shù)");
n?=?System.in.read(b);
s?=?new?String(b,0,n);
leg?=?Integer.parseInt(s.trim());
if?(leg?!=?legs[i])?{
throw?new?Exception(names[i]+"必須有"+legs[i]+"條腿");
}
System.out.println("請(qǐng)輸入"+names[i]+"的叫聲");
n?=?System.in.read(b);
s?=?new?String(b,0,n);
sound?=?s.trim();
if?(sound.length()?==?0)?{
throw?new?Exception(names[i]+"必須有聲音");
}
animals[i].name?=?name;
animals[i].legs?=?leg;
animals[i].sound?=?sound;
}
}
catch(Exception?e){
e.printStackTrace();
}
}
}
}
湊合寫的....
instanceof 不難吧...就是驗(yàn)證類是否為類或者父類的實(shí)例...
我看你ppt要求的是自定義異常拋出,接口繼承應(yīng)該很簡(jiǎn)單,拋出異常參考我的代碼即可..
/**
* Animal.java
*/
package animal;
public class Animal {
private String name; //名稱
private int bodySize; //大小
private float weight; //體重
public Animal (String name, int bodySize, float weight) {
this.name = name;
this.bodySize = bodySize;
this.weight = weight;
}
public void run () { //跑
System.out.println("I'm running!");
}
public void jump () { //跳
System.out.println("I'm jumping!");
}
public void walk () { //走
System.out.println("I'm walking!");
}
public String getName () {
return name;
}
public int getBodySize () {
return bodySize;
}
public int getWeight () {
return weight;
}
public String toString () {
return ("I'm a " + name +
", my body size is " + bodySize +
", and my weight is " + weight + ".");
}
}
/**
* 這是一個(gè)測(cè)試類: TestAnimal.java
*/
package animal;
public class TestAnimal {
public static void main (String args[]) {
Animal ani = new Animal("tiger", 5, 10.5);
System.out.println(ani.toString());
ani.run();
ani.jump();
ani.walk();
}
}
------------------------------------
輸出:
I'm a tiger, my body size is 5, my weight is 10.5.
I'm running!
I'm jumping!
I'm walking!
------------------------------------
不會(huì)測(cè)試就不測(cè)試唄,我輸出都幫你寫出來了。
------------------------------------
測(cè)試結(jié)果就是上面的內(nèi)容。把以上兩個(gè)程序保存成 Animal.java 和 TestAnimal.java。放入一個(gè)新建名為 animal 的文件夾。比如路徑是 C:\animal\,運(yùn)行 cmd,輸入:cd\ 回車,
再輸入:C: 回車,
然后輸入:javac animal\Animal.java animal\TestAnimal.java 回車,
如果沒有什么錯(cuò)誤提示,再輸入:java animal.TestAnimal 回車。
---------------就可以了!
//創(chuàng)建一個(gè)AnimalSound數(shù)組,容量為3
AnimalSound[]?animal?=?new?AnimalSound[3]
//在數(shù)組中分別放入Cat、Dog、Duck三個(gè)對(duì)象
animal[0]?=?new?Cat();
animal[1]?=?new?Dog();
animal[2]?=?new?Duck();
//循環(huán)遍歷AnimalSound數(shù)組,這是for?each的循環(huán),跟下面的代碼有相同的效果
//?for(int?i=0;ianimal.size();i++){?
//?animal[i].sound();
//}
for(AnimalSound?obj:?animal){
//調(diào)用三個(gè)對(duì)象的sound()方法
obj.sound();
}
程序的意思應(yīng)該是表達(dá)繼承的關(guān)系,三個(gè)動(dòng)物繼承了動(dòng)物聲音這個(gè)父類,所以它們都具有了發(fā)出聲音的功能。 main方法中,用數(shù)組放了三個(gè)動(dòng)物的實(shí)例,然后循環(huán),讓它們分別發(fā)出聲音。