/*抽象类(abstract)
abstract修饰可以和类、方法、属性、索引器及事件一起使用。 在类声明中使用abstract修饰符
以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
* */
/*抽象类的特性
* 1、抽象类不能实例化。
* 2、抽象类可以包含抽象方法和抽象访问器。
* 3、不能用sealed修饰符修改抽象类,这意味着抽象类不能被继承。
* 4、从抽象类继承的非抽象类必须包括继承的所有抽象方法和访问器的实现。
*
* 抽象类总结
* 1、抽象方法是隐式的虚方法。
* 2、只允许在抽象类中使用抽象方法声明。
* 3、因为抽象方法声明不提供实际的实现,所以没有方法体。
* 方法体只能以分号结束,并且在签名后没有花括号({}),
* 实现由一个重写方法提供,此重写方法为非抽象类成员。
* 4、在抽象方法中使用static与virtual修饰符是错误的。
* 5、除了在声明与调用语法上不同外,抽象属性的行为和抽象方法一样。
* 6、在静态属性上使用abstract修饰符是错误的。
* 7、在派生类中,通过包括使用override修饰符的属性声明,可以重写抽象类继承属性。
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 抽象类
{
class Program
{
static void Main(string[] args)
{
B b = new B();
b.x = 10;
Console.WriteLine(b.x);
}
abstract class A
{
protected int _x;
public abstract void F();
public abstract int x
{
get;
set;
}
}
class B:A
{
public override void F()
{
}
public override int x
{
get
{
return _x;
}
set{_x=value;}
}
}
}
}