Class Animal
{
public
virtual
string
Shout()
//注意修饰符中增加了一个virtual,它表示此方法是虚方法,可以被子类重写
{
return
""
;
}
}
在构建猫这个类时,我们重写“叫”这个方法
12345678Class cat:Animail
{
Public
override
string
Shout()
{
//关键字override,表示方法重写
string
result=
"喵"
;
return
result;
}
}
在构建狗这个类时,我们也重写“叫”这个方法
123456789Class Dog:Animal
{
public
override
string
Shout()
{
string
result=
"汪"
;
return
result;
}
}
重写发生在父类和子类之间,声明的是父类,实例化的是子类。本例子实现了多态。
四、小结
重载必须发生在一个类中,方法名相同,参数不同。值得注意的是,方法重载必须通过参数不同来判断调用哪个方法,而不能通过返回值。
重写override一般用于接口实现和继承类的方法改写。值得注意的是,被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有进行覆盖。
评论