子类重写并且调用父类同名方法
时间: 2023-08-22 19:22:39 浏览: 112
子类可以重写父类的同名方法,并且在子类中通过 `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 子类方法重写后,如何调用父类方法
在Python中,如果你有一个子类并重写了父类的方法,你可以通过以下几种方式调用原父类的方法:
1. **`super()`函数**:这是最推荐的方式,它允许你在子类方法内部访问并调用父类的同名方法。例如:
```python
class ParentClass:
def parent_method(self):
print("This is the parent method.")
class ChildClass(ParentClass):
def child_method(self):
super().parent_method() # 调用父类方法
print("This is the child method.")
```
2. **使用`.`操作符**: 如果你想明确指定父类对象,可以先创建一个父类的实例,然后通过`.`来调用父类方法:
```python
class ParentClass:
def parent_method(self):
print("This is the parent method.")
class ChildClass(ParentClass):
def child_method(self):
parent_instance = ParentClass()
parent_instance.parent_method() # 调用父类方法
print("This is the child method.")
```
无论是哪种方式,都可以让你在子类的方法中保留对父类方法的访问权限,实现了多态。
阅读全文