📅  最后修改于: 2023-12-03 15:11:41.759000             🧑  作者: Mango
继承是一种OOP(面向对象编程)的概念,它意味着创建一个类可以从另一个类继承功能。继承是一种代码重用的方式,它可以减少冗余代码的量。子类会继承父类的属性和方法,并且可以在其中添加自己的属性和方法。
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self):
print(f"{self.name} is eating.")
class Cat(Animal):
def __init__(self, name, age, color):
super().__init__(name, age)
self.color = color
def meow(self):
print(f"{self.name} is meowing.")
cat = Cat("Kitty", 2, "black")
cat.eat()
cat.meow()
在代码片段中,Cat
类继承了Animal
类,并且扩展了自己的颜色属性和meow()
方法。
多态是指同一个方法名可以有不同的实现方式。在OOP中,多态可以用来让不同的子类实现同一种方法,而每个子类的方法实现可能不同。多态的实现方式包括重载和重写。
重载是在同一个类中定义多个方法,它们的名称相同而参数不同。这样当你使用这个方法时,编译器会根据你所使用的方法的参数来判断到底调用哪个方法。
重写是指子类实现了一个方法,但是父类已经存在这个方法。在这种情况下,当你调用这个方法时,子类的方法将覆盖父类的实现。
class Shape:
def area(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side * self.side
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * (self.radius ** 2)
square = Square(5)
circle = Circle(3)
shapes = [square, circle]
for shape in shapes:
print(shape.area())
在代码片段中,Shape
类中存在一个area()
方法,但它并没有具体的实现。Square
类和Circle
类都继承了Shape
类,并且实现了自己的area()
方法。在循环中,我们可以看到square.area()
和circle.area()
分别调用了子类的area()
方法,这里就体现了多态的概念。