.编写代码实现成员函数的重载、覆盖与隐藏
时间: 2024-09-07 10:04:31 浏览: 78
java中重载、覆盖和隐藏三者的区别分析
在面向对象编程中,成员函数的重载(Overloading)、覆盖(Overriding)和隐藏(Hiding)是为了提供更丰富的功能和灵活性。
1. **重载(Overloading)**:在同一类中,可以定义两个或多个同名函数,但它们的参数列表不同(包括参数的数量、类型或顺序)。例如,在C++中:
```cpp
class MyClass {
public:
void print(int num) { /* 打印整数 */ }
void print(double num) { /* 打印双精度浮点数 */ }
};
```
这里,`print`函数就是重载的,根据传入的参数类型会选择合适的实现。
2. **覆盖(Overriding)**:当继承自父类并有一个同名的方法时,可以在子类中提供自己的实现,这称为方法重写。如果在子类实例上通过父类引用调用该方法,会执行子类的方法。例如,Java中的覆盖:
```java
class Parent {
public void display() {
System.out.println("Parent class");
}
}
class Child extends Parent {
@Override
public void display() {
System.out.println("Child class");
}
}
```
在`Child`类中,`display`方法就覆盖了父类`Parent`的`display`方法。
3. **隐藏(Hiding)**:如果父类中存在方法,而子类也定义了一个同名但不同签名的方法,那么子类的方法会“隐藏”父类的方法,仅对子类的对象可见。但在Java中,为了避免意外隐藏,通常推荐使用`@Override`注解来明确意图,并在子类中声明该方法。
阅读全文