關于繼承抽象和接口的問題
1. 創建項目:InterfaceProject;
2. 創建Animal類,該類是抽象類:
·聲明一個受保護的整數實例變量legs,記錄動物的腿的數目;
·定義一個受保護的構造方法來初始化legs實例變量;
·聲明抽象方法eat;
·聲明具體方法walk來顯示與動物行走方式有關的信息(包括腿的數目);
3. 創建Pet接口:聲明三個抽象方法:
? public String getName();
? public void setName(String n);
? public void play();
4. 創建Spider類:
·Spider類擴展了Animal類;
·定義一個無參數構造方法,調用父類構造方法來指明所有蜘蛛都有八條腿;
·實現eat方法;
5. 創建Cat類:
·聲明String實例變量來存儲寵物的名字;
·定義一個構造方法,使用String參數來指定貓的名字;該構造方法必須調用父類構造方法來指明所有貓都有四條腿;
0
·實現Pet接口方法;
·實現eat方法;
6. 創建Fish類:
·聲明String實例變量來存儲寵物的名字;
·定義一個無參數的構造方法,該構造方法調用父類構造方法來指明魚沒有腿;
·實現Pet接口方法;
·覆蓋walk方法,該方法調用所有的超級方法,并打印輸出一條說明魚不會行走的消息;
·實現eat方法;
7. 創建TestAnimal類:
·該類有程序入口main()函數;
·創建并操作前面所創建的類的實例;
·調用每個對象中的方法;
·對象類型轉換;
·使用多態特性;
·使用super關鍵字調用父類方法。
2022-03-27
謝謝啦~nbsp;我也發現了
2017-03-19
public abstract class Animal {
protected ? int legs;
protected Animal(int legs) {
this.legs = legs;
}
public abstract void eat();
public void walk() {
System.out.println("walk");
}
}
public class Spider extends Animal {
public Spider(int legs) {
super(legs);
}
public void eat() {
System.out.println("Spider is eating");
}
}
public class Cat extends Animal implements Pet{
String name;
public Cat(String name, int legs) {
super(legs);
this.name = name;
}
public void eat() {
}
public Cat() {
this("cat", 4);
}
?public String getName(){
?return name;
?}
?public void setName(String name){
?this.name=name;
?}
?public void play(){
?
?}
}
public interface Pet {
?public String getName();
?public void setName(String name);
?public void play();
}
public class Fish extends Animal implements Pet{
String name;
public Fish(){
super(legs);
}
public void walk(){
System.out.println("Fish can't walk!");
}
public void eat(){
}
public String getName(){
?return name;
}
public void setName(String name){
?this.name=name;
}
public void play(){
?
}
}
public class TestAnimal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal a=new Spider(8);
a.eat();
? Animal b=new Cat("wal",4);
}
? b.eat();
}
2017-03-19
代碼如下 有錯誤 做到一半也有錯的