子类重写并且调用父类同名方法
时间: 2023-08-22 19:22:39 浏览: 104
子类可以重写父类的同名方法,并且在子类中通过 `super` 关键字来调用父类的同名方法。例如:
```python
class Parent:
def greet(self):
print("Hello, I'm the parent")
class Child(Parent):
def greet(self):
super().greet() # 调用父类的 greet 方法
print("Hi, I'm the child")
c = Child()
c.greet()
```
在上面的例子中,子类 `Child` 重写了父类 `Parent` 的 `greet` 方法,并且在子类中通过 `super().greet()` 调用了父类的 `greet` 方法。运行上面的代码会输出:
```
Hello, I'm the parent
Hi, I'm the child
```
这样就可以在子类中继承并扩展父类的方法。需要注意的是,在调用父类的同名方法时,不需要再传入 `self` 参数,`super` 关键字会自动传递。
相关问题
Java子类重写父类同名方法
在Java中,子类重写父类同名方法是一种实现多态的方式,也称为方法覆盖(Method Overriding)。当子类有一个与父类同名、同参数列表并且返回类型相同的函数时,子类就实现了对父类方法的重写。这使得子类可以在保持公共接口不变的情况下,提供自定义的行为。
以下是一个简单的例子:
```java
class ParentClass {
public void printMessage() {
System.out.println("这是ParentClass的方法");
}
}
class ChildClass extends ParentClass {
// 子类重写了printMessage方法
@Override
public void printMessage() {
System.out.println("这是ChildClass重写后的消息");
}
}
public class Main {
public static void main(String[] args) {
ParentClass parent = new ParentClass(); // 创建父类实例
parent.printMessage(); // 输出 "这是ParentClass的方法"
ChildClass child = new ChildClass(); // 创建子类实例
child.printMessage(); // 输出 "这是ChildClass重写后的消息"
}
}
```
在这个例子中,当你通过`child`对象调用`printMessage()`时,实际上会执行`ChildClass`的版本,体现了多态性。
python已知定义了名为Mammal的类,请定义其子类Dog和Cat,并在子类中重写与父类同名的方法,实现多态
好的,下面是代码实现:
```python
class Mammal:
def move(self):
print("Mammal is moving")
class Dog(Mammal):
def move(self):
print("Dog is running")
class Cat(Mammal):
def move(self):
print("Cat is jumping")
```
在上面的代码中,我们定义了一个名为 Mammal 的父类,其中有一个名为 `move` 的方法。然后,我们定义了两个子类 Dog 和 Cat,它们都继承自 Mammal 父类,并分别重写了 `move` 方法,以实现多态。在 Dog 类中,我们重写了 `move` 方法,使其输出 "Dog is running";在 Cat 类中,我们重写了 `move` 方法,使其输出 "Cat is jumping"。
如果您想使用这些类,可以按以下方式实例化一个对象并调用其 `move` 方法:
```python
dog = Dog()
dog.move() # 输出 Dog is running
cat = Cat()
cat.move() # 输出 Cat is jumping
```
希望这个例子能够帮助您理解如何定义一个类和其子类来实现多态。
阅读全文