overide和virtual使用举例
时间: 2024-10-13 13:15:56 浏览: 18
在面向对象编程中,`override` 和 `virtual` 是两个关键的关键字,它们用于处理多态性和方法的重写。下面是这两个关键字的一些例子:
### Override (覆盖)
`Override` 关键字主要用于表示一个子类重写了其父类的方法。这是在 C#、Java 等语言中的用法示例:
```java
// 假设有一个 Animal 类
class Animal {
public virtual void Sound() {
Console.WriteLine("Animal makes a generic sound");
}
}
// 子类 Dog 继承自 Animal 并覆盖 Sound 方法
class Dog : Animal {
override public void Sound() {
Console.WriteLine("Dog barks");
}
}
```
在这个例子中,`Dog` 类中的 `Sound()` 方法覆盖了 `Animal` 类中的同名虚方法。当我们创建一个 `Dog` 对象并调用 `Sound()`,将打印 "Dog barks"。
### Virtual (虚拟)
`Virtual` 关键字标记了一个方法,使得子类可以重写这个方法。在 C# 中,如果没有 `override` 关键字,那么默认就是 virtual 的:
```csharp
public class BaseClass {
public virtual void DisplayMessage(string message) {
Console.WriteLine(message);
}
}
public class DerivedClass : BaseClass {
// 由于未指定 override,这里默认是 virtual 的
public void DisplayMessage(string message) { // 不是覆盖,而是扩展
base.DisplayMessage("From derived class: " + message);
}
}
```
在上面的例子中,`DerivedClass` 可以在其自己的 `DisplayMessage()` 方法中添加额外的行为,但不会真正地“覆盖”原方法,只是扩展了它的功能。
相关问题:
1. Override和Virtual的区别是什么?
2. C++中如何声明一个虚函数?
3. 使用override关键字有哪些注意事项?
阅读全文