抽象是一种很好的方法,而在C#中也为我们提供了一种很好的抽象类供我们使用。
定义
使用的时候只需要在一般类定义的前面加上关键字abstruct。例如
abstract class parent
{
public void sleep()
{
Console.WriteLine("haode");
}
public abstract void eat(); //抽象方法没有具体的实现
}
class child:parent
{
public override void eat()
{
Console.WriteLine("吃好一点"); //必须在继承中具体实现抽象方法
}
}
使用起来就这么简单,但是也要注意以下抽象类的特性。
1.不能被实例化
2.抽象类下的抽象方法没有具体的实现,但在派生类中必须实现
3.抽象类就是用来继承的,因此不能用sealed修饰符修饰抽象类。
写到这里不知大家感觉是不是与继承类中的虚方法特别的相似。下面就谈一下两者的区别。先看两个例子。
class person
{
public void jump() { } //
//public abstract void drink(); 普通类中不能包含抽象类
}
abstract class people //抽象类
{
public abstract void eat();
}
class zhangsan:people //抽象类只能被继承,不能实例化
{
public override void eat()
{
Console.WriteLine("吃点什么");//必须有具体的操作
}
}
总结:
虚方法 |
抽象方法 |
有方法体 |
不允许有方法体 |
用virtual修饰 |
用abstract修饰 |
可以被子类override |
必须被子类override |
除密封外都可以重写 |
必须在派生类中给出具体实现 |
原文:http://blog.csdn.net/luckyzhoustar/article/details/19826547