色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java的重寫和多態

謝彥文1年前6瀏覽0評論

Java是面向對象編程語言,支持繼承、封裝、重寫和多態等特性。其中,重寫和多態是Java最重要也是最常見的兩個特性之一。

重寫(Override)

重寫即是子類對父類繼承而來的方法進行重新定義,使其方法體內容發生改變,但是方法名、返回值和參數列表都不能改變。重寫提供了一種方式,使得子類可以覆蓋父類的同名方法,以實現不同的方法功能。例如:

class Animal{
public void sound(){
System.out.println("動物發出叫聲");
}
}
class Cat extends Animal{
public void sound(){
System.out.println("喵喵喵");
}
}
class Dog extends Animal{
public void sound(){
System.out.println("汪汪汪");
}
}

以上代碼定義了動物類Animal,以及它的兩個子類Cat和Dog。Cat和Dog都重寫了sound()方法,根據不同的動物類型發出不同的叫聲。當創建Cat或Dog的實例并調用sound()方法時,輸出結果也不同:

Animal cat = new Cat();
Animal dog = new Dog();
cat.sound(); // 輸出 "喵喵喵"
dog.sound(); // 輸出 "汪汪汪"

多態(Polymorphism)

在Java中,多態包括靜態多態和動態多態兩種形式。靜態多態是指在編譯時就確定方法的調用,由編譯器決定使用哪個方法;動態多態是指在運行時根據對象的實際類型進行方法調用,由虛擬機決定使用哪個方法。

動態多態基于重寫進行實現,提供了一種同一個方法可以有多個不同的實現方式的方式。即,同一個方法在不同的對象上具有不同的行為。例如:

class Shape{
public void print(){
System.out.println("這是一個形狀");
}
}
class Rectangle extends Shape{
public void print(){
System.out.println("這是一個矩形");
}
}
class Circle extends Shape{
public void print(){
System.out.println("這是一個圓形");
}
}

以上代碼定義了Shape、Rectangle和Circle三個類,其中Rectangle和Circle都是Shape的子類,它們都重寫了Shape中的print()方法。當創建一個Shape類型的數組并分別存儲Rectangle和Circle對象時,便可以實現多態的效果:

Shape[] shapes = new Shape[2];
shapes[0] = new Rectangle();
shapes[1] = new Circle();
for(Shape shape : shapes){
shape.print();
}

輸出結果為:

這是一個矩形
這是一個圓形

由于調用的是Shape類中的print()方法,但是實際上調用的卻是Rectangle和Circle類中的重寫版本,根據不同的實際類型輸出不同的信息,就實現了動態多態的效果。