Python中的多型
阿新 • • 發佈:2021-01-15
多型(Polymorphism)按字面的意思就是“多種狀態”。在面嚮物件語言中,介面的多種不同的實現方式即為多型。
引用Charlie Calverts對多型的描述——多型性是允許你將父物件設定成為一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。
簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。
例如Java中的多型可以理解為
class Person{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Student extends Person{
private String studentId;
public Student() {
}
public Student(String name, int age, String studentId) {
super(name, age);
this .studentId = studentId;
}
}
public class Polymorphism {
public static void main(String[] args) {
// 多型的體現
Person person = new Student();
}
}
但在Python中例項化類時,無需指定型別,所以不能夠像Java等語言一樣使用父類引用指向子類物件的多型體現
Python中的多型是讓具有不同功能的函式可以使用相同的函式名,也可以理解為不同的子類物件呼叫相同的父類方法產生不同的執行結果
class Dog(object ):
def __init__(self, name):
self.name = name
def game(self):
print("%s 蹦蹦跳跳的玩耍..." % self.name)
class XiaoTianDog(Dog):
def game(self):
print("%s 飛到天上去玩耍..." % self.name)
class Person(object):
def __init__(self, name):
self.name = name
def game_with_dog(self, dog):
print("%s 和 %s 快樂的玩耍..." % (self.name, dog.name))
# 讓狗玩耍
dog.game()
# 1. 建立一個狗物件
# wangcai = Dog("旺財")
wangcai = XiaoTianDog("飛天旺財")
# 2. 建立一個小明物件
xiaoming = Person("小明")
# 3. 讓小明呼叫和狗玩的方法
xiaoming.game_with_dog(wangcai)