[英]Concept of overridding in java
超類中的方法適用於java中的所有子類....如果子類有自己獨立的方法,我怎樣才能使它工作...
class Polymorphism3 {
public static void main(String[] args) {
// note how these are all considered objects of type Animal by Java
Animal[] a = new Animal[4];
a[0] = new Mouse();
a[1] = new Bird();
a[2] = new Horse();
a[3] = new Animal();
for (int i=0;i<4;i++) {
a[i].pullTail();
}
//...
class Animal {
public void pullTail() {
System.out.println("I don't know what to say.");
}
}
class Mouse extends Animal {
public void pullTail() {
System.out.println("fart");
}
}
class Bird extends Animal {
public void pullTail() {
System.out.println("tweet");
}
public void fly() {
System.out.println("flap");
}
}
class Horse extends Animal {
public void pullTail() {
System.out.println("neigh");
}
}
如果未在Animal中聲明,則無法使其正常工作。
唯一的方法是將動物轉化為鳥類如
((鳥)一[1])飛();
你也可以從Bird的putTail實現中調用它。
如果這是無法實例化嵌套類:你需要一個封閉類的對象:
public class Polymorphism3 {
public static void main(String[] args) {
// note how these are all considered objects of type Animal by Java
Animal[] a = new Animal[4];
Polymorphism3 poly = new Polymorphism3();
a[0] = poly.new Mouse();
a[1] = poly.new Bird();
a[2] = poly.new Horse();
a[3] = poly.new Animal();
for (int i = 0; i < 4; i++) {
a[i].pullTail();
}
}
class Animal {
public void pullTail() {
System.out.println("I don't know what to say.");
}
}
class Mouse extends Animal {
public void pullTail() {
System.out.println("fart");
}
}
class Bird extends Animal {
public void pullTail() {
System.out.println("tweet");
}
public void fly() {
System.out.println("flap");
}
}
class Horse extends Animal {
public void pullTail() {
System.out.println("neigh");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.