Sri*_*ddy 3 c# oop inheritance overriding
public class Shapes
{
public virtual void Color()
{
Console.WriteLine("Shapes");
}
}
public class Square : Shapes
{
public void Color()
{
Console.WriteLine("Square");
}
}
public class Test
{
public static void main()
{
Shapes s1 = new Shapes();
s1.Color();
Shapes s2 = new Square();
s2.Color();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道基类是否已经定义了一些虚拟方法,那么在derive类中是否必须覆盖它们?同样,如果基类方法是抽象的,我们需要在派生类中实现该方法,但是override修饰符是必需的吗?如果省略override修饰符怎么办?
我想知道基类是否已经定义了一些虚拟方法,那么在derive类中是否必须覆盖它们?
当然不.由派生类决定是否覆盖虚方法.请注意,某些类会建议派生类在某些情况下覆盖特定的虚方法,但编译器不会强制执行该操作.
如果基类方法是抽象的,我们需要在派生类中实现该方法,但是override修饰符是必需的吗?
是的,您需要使用override关键字,否则该方法将被派生类中的定义隐藏.
如果您实际运行代码,您将看到两次打印"形状".那是因为类中的Color()方法Squares没有使用override关键字声明.因此,它隐藏了基类方法.这意味着它只能通过以下类型的变量访问Squares:
Squares s3 = new Squares();
s3.Color();
Run Code Online (Sandbox Code Playgroud)
这将打印"Square",因为您正在调用正确类型的变量上的方法.