Java 和 Python 是兩種常用的編程語言,二者都支持多態特性。然而,它們之間還存在一些區別。下面我們就來看一下 Java 和 Python 的多態區別:
Java 中多態: 在 Java 中,多態通過繼承和接口實現。 1. 方法重寫(覆蓋) Java 中,子類可以重寫父類的方法,實現自己的行為,這種方法重寫就是多態的一種體現。 例如: class Animal { public void makeSound() { System.out.println("Animal makes sound"); } } class Dog extends Animal { public void makeSound() { System.out.println("Dog barks"); } } class Cat extends Animal { public void makeSound() { System.out.println("Cat meows"); } } 2. 方法重載 Java 還可以通過方法重載實現多態。方法重載是指在一個類中存在兩個或多個具有相同名字的方法,但是參數列表不同。 例如: class Calculation { public int add(int x, int y) { return x + y; } public double add(double x, double y) { return x + y; } } Python 中多態: 在 Python 中,多態通過函數重載和 duck typing 實現。 1. 函數重載 Python 并不直接支持函數重載。在 Python 中,函數重載是通過參數個數或者參數類型的不同來實現的。 例如: def add(x, y): return x + y def add(x, y, z): return x + y + z 2. duck typing 在 Python 中,如果一個對象能夠完成某個操作,那么它就可以被視為可以完成這個操作的對象。這種方式被稱為 duck typing。 例如: class Duck: def quack(self): print("Quack") class Person: def quack(self): print("I'm quacking like a duck!") def in_the_forest(duck): duck.quack() if __name__ == '__main__': donald = Duck() john = Person() in_the_forest(donald) in_the_forest(john)
綜上可知,Java 和 Python 雖然都支持多態,但是其實現方式不同。在 Java 中,多態主要是通過方法重寫和方法重載實現;在 Python 中,多態主要是通過函數重載和 duck typing 實現。