抽象类
抽象类在声明类时添加abstract来创建抽象类,如果抽象类中包含抽象方法,则继承的派生类必须要使用override实现抽象类的重写。
注意:
(1)不能在抽象类外部声明抽象方法。
(2)不能创建抽象类的实例。
(3)不能将抽象类声明为sealed(密封类,不能被继承)
抽象类重写
abstract class Name //名字类
{
public abstract string PrintName();
}
class ChineseName:Name //中文名
{
private string chineseName;
public ChineseName() //构造函数
{
chineseName = "小王";
}
public override string PrintName()
{
return chineseName;
}
}
......
ChineseName cn = new ChineseName();
Console.WriteLine("{0}", cn.PrintName());
运行结果:小王
虚方法
虚方法则是在基类用带有virtual修饰符的方法,用法跟抽象类相似,也是在基类中声明然后再派生类中用override修饰符覆盖基类虚方法,表明对虚方法进行重载。
虚方法重载
abstract class Name //名字类
{
public virtual string PrintName()
{
return null;
}
}
class ChineseName : Name //中文名
{
private string chineseName;
public override string PrintName()
{
chineseName = "小刚";
return chineseName;
}
}
......
ChineseName cn = new ChineseName();
Console.WriteLine("{0}", cn.PrintName());
运行结果:小刚
既然两种方法都可以对基类方法进行重载,那有什么区别呢,区别如下:
(1)抽象类方法只能在抽象类中声明,而虚方法则不受限制。
(2)抽象类的派生类必须要重载抽象方法,而虚方法不必。
(3)虚方法必须有实现部分,而抽象类没有提供实现部分。

博客介绍了抽象类和虚方法。抽象类用abstract创建,含抽象方法时派生类须重写,有不能外部声明抽象方法等注意事项;虚方法用virtual修饰,派生类用override覆盖。还对比了二者区别,如抽象类方法只能在抽象类声明,派生类必须重载等。
----- 抽象类和虚方法&spm=1001.2101.3001.5002&articleId=82222622&d=1&t=3&u=e063ca787a484dcc8b79b7580de16f1f)
598

被折叠的 条评论
为什么被折叠?



