2024.8.2
1.介面
介面即為一個抽象的方法,此方法定義了很多種行為,可供類們去實現,而避免了使用多種重複的else……if,while等即時運算。
抽象,即為更上層的概念。比如“男人”的抽象為“人”,“人”的抽象為動物,這就是一個統領的節點。
以下為示例
public class Demo1 {
public interface animal{//定義一個介面方法
public void eat();//定義兩個公共方法
public void bellow();//等待繼承此介面的類來實現這兩個方法
public static void al(){
System.out.println("此項為介面的定義!");
}
}
public class bear implements animal{
public void eat(){//實現animal中的eat方法
System.out.println("熊正在乾飯!");
}
public void bellow(){//實現animal中的bellow方法
System.out.println("熊正在吼叫!");
}
public String pack(){//在類中額外建立一個方法
return "好多動物!";
}
}
}
從此可以看出介面既是可以被下層物件可使用的另一種“繼承”。
2.多型
一、定義
- 多型(Polymorphism)字面意思為“多種形態”,在程式設計中,它指的是相同的操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。
- 簡單來說,多型就是允許將子類型別的指標賦值給父類型別的指標(向上轉型),然後透過這個父類型別的指標呼叫實際子類物件的成員函式,此時發生的是動態繫結(即執行時繫結),根據物件的實際型別來呼叫相應的函式。
class Animal {
// 父類中的方法
public void makeSound() {
System.out.println("某種聲音");
}
}
// Dog類繼承自Animal類
class Dog extends Animal {
// 重寫父類中的方法
@Override
public void makeSound() {
System.out.println("汪汪");
}
}
// Cat類繼承自Animal類
class Cat extends Animal {
// 重寫父類中的方法
@Override
public void makeSound() {
System.out.println("喵喵");
}
}
// 測試多型性
public class PolymorphismTest {
public static void main(String[] args) {
// 父類引用指向子類物件
Animal myDog = new Dog();
Animal myCat = new Cat();
// 呼叫同一個方法,但行為取決於物件的實際型別
myDog.makeSound(); // 輸出:汪汪
myCat.makeSound(); // 輸出:喵喵
// 列表儲存不同型別的物件
Animal[] animals = new Animal[2];
animals[0] = new Dog();
animals[1] = new Cat();
for (Animal animal : animals) {
animal.makeSound(); // 執行時根據物件的實際型別呼叫對應的方法
}
// 輸出:
// 汪汪
// 喵喵
}
}
此項結果中,makesound被貓和狗的叫聲方法重寫,從而在外是相同的呼叫方法,實際上卻是沒有不同的實現方法。
這就是多型的一個應用場景。