Penggantian fungsi membolehkan subkelas menyediakan pelaksanaan tersuai untuk fungsi kelas induk tanpa menjejaskan kelakuan kelas induk. Subkelas hanya mengisytiharkan fungsi baru dengan nama dan senarai parameter yang sama. Sebagai contoh, fungsi area() dalam kelas Shape ditindih oleh kelas Rectangle untuk menyediakan pengiraan kawasan tersuai untuk segi empat tepat sambil masih memanfaatkan kaedah abstrak kelas Shape.
Petua untuk menulis semula fungsi: Keluarkan kelebihan eksklusif kod subkelas
Pennulisan semula fungsi membolehkan subkelas menyediakan pelaksanaan mereka sendiri bagi fungsi dengan nama yang sama tanpa menjejaskan pelaksanaan kelas induk. Melakukannya membolehkan subkelas menyesuaikan tingkah lakunya sambil masih mengambil kesempatan daripada kefungsian kelas induk.
Untuk mengatasi fungsi, subkelas hanya mengisytiharkan fungsi baharu dengan nama dan senarai parameter yang sama. Pelaksanaan subkelas akan mengatasi pelaksanaan kelas induk.
Contoh kod:
class Shape: def area(self): raise NotImplementedError class Rectangle(Shape): def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width # 创建矩形对象 rectangle = Rectangle(5, 10) # 调用重写的 area() 函数 print(rectangle.area()) # 输出:50
Kes praktikal:
Pertimbangkan kelas Bentuk yang menyediakan fungsi area()
函数来计算形状的面积。现在,我们想创建 Rectangle 类,它继承自 Shape 类并提供 Rectangle 形状的具体面积计算。
通过重写 area()
area()
, kita boleh menambah pelaksanaan tersuai untuk segi empat tepat pada kelas Rectangle tanpa mengubah suai pelaksanaan Shape kelas induk. Ini memberi kami fleksibiliti untuk menyediakan kod khusus bentuk untuk pelbagai jenis bentuk. Petua:
Atas ialah kandungan terperinci Petua menulis semula fungsi: Kuasai rahsia menulis kod khusus subkelas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!