整體沒啥問題,有幾處需要改:
江永網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選成都創(chuàng)新互聯(lián)公司。
1、類名好幾處都是小寫的,不知道你哪來的代碼:
所有string需要改為String
Simulator simulator=new simulator();要改為Simulator simulator=new Simulator();
abstract class animal要改為abstract class Animal
2、另外還要改Simulator類:
class Simulator{
void playSound(Animal animal){
System.out.println("動物名稱是:"+"動物.getAnimalName()");
System.out.println("動物叫聲是:"+"動物.cry()");
}
}
有兩處需要改:
要把"動物.getAnimalName()"改為:animal.getAnimalName()
System.out.println("動物叫聲是:"+"動物.cry()");因為cry()方法時void的,所以需要改成這樣:
System.out.print("動物叫聲是:");
animal.cry();
也就是說Simulator類要整體改為:
class Simulator {
void playSound(Animal animal) {
System.out.println("動物名稱是:" + animal.getAnimalName());
System.out.print("動物叫聲是:");
animal.cry();
}
}
好了,可以運行了:
改完后的全部代碼為:
public class JJ {
public static void main(String[] args) {
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
abstract class Animal {
abstract void cry();
abstract String getAnimalName();
}
class Dog extends Animal {
void cry() {
System.out.println("汪汪...");
}
String getAnimalName() {
return "Dog";
}
}
class Cat extends Animal {
void cry() {
System.out.println("喵喵...");
}
String getAnimalName() {
return "Cat";
}
}
class Simulator {
void playSound(Animal animal) {
System.out.println("動物名稱是:" + animal.getAnimalName());
System.out.print("動物叫聲是:");
animal.cry();
}
}
代碼老是擠在一起,我截幾個圖給你康康:
3-15行
16-35行
最后幾行,注意這里的變化
這是有一個很典型的關于java 面向?qū)ο? 繼承的使用 ,很簡單 先創(chuàng)建一個如animal類,并有個makeVoice()方法,然后instance 這個類 ,如 bird rabit dog cat ect.下面就是繼承后分別實現(xiàn)makeVoice() 方法!
抽象類Animal
public abstract interface Animal {
public void Sound();
}
實體類Cat
public class Cat implements Animal {
public void Sound(){
System.out.println("小貓叫:喵喵喵...");
}
}
實體類Dog
public class Dog implements Animal {
public void Sound() {
System.out.println("小狗叫:汪汪汪...");
}
}
測試類AnimalContainer
public class AnimalContainer {
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
AnimalContainer animalContainer = new AnimalContainer();
animalContainer.animalSpeak(cat);
animalContainer.animalSpeak(dog);
}
void animalSpeak(Animal animal){
animal.Sound();
}
}
抽象的Animal 類
public abstract class Animal {
public abstract void sound();
}
CanFly接口
public interface CanFly {
public void fly();
}
Bird類繼承自Animal類,并有屬性表示鳥類年齡。并實現(xiàn)父類中的sound方法
使鳥類實現(xiàn)接口Canfly,并實現(xiàn)其中的fly方法,在方法中向控制臺打印輸出:鳥在飛。。。
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("鳥在飛。。。 ");
}
}
編寫飛機類Plane,使飛機類實現(xiàn)接口Canfly,并實現(xiàn)其中的fly方法,在方法中向控制臺打印輸出:飛機在飛。。。
public class Plane implements CanFly {
public void fly() {
// TODO Auto-generated method stub
System.out.println("飛機在飛。。。 ");
}
}
編寫測試類,測試類中有main方法,還有l(wèi)etFly方法,打印輸出什么事物在飛方法頭部為:public static void letFly(Canfly c)
還有l(wèi)etSound方法,打印輸出什么動物在叫,在方法中要判斷,這個對象是否是動物,如果是動物才讓叫。方法頭部為:public static void letSound(Animal a)
在main方法中創(chuàng)建鳥對象和飛機對象,在分別調(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);//飛機沒有繼承自Animal類所以不能調(diào)用該方法
}
}
以上全部按照你要求寫的