---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
抽象类使用abstract修饰符,用于表示类中成员不一定全部实现。即可以只有声明部分而没有实现部分。抽象类只能做基类。
抽象类与非抽象类的区别:
第一:抽象类不能直接被实例化,只能在扩充类中通过继承使用。对抽象类使用new关键字会产生编译错误。
第二:抽象类可以包含抽象成员,而非抽象类不能包含抽象成员,当从抽象类中派生非抽象类时,非抽象类必须实现抽象类中所有的抽象成员。
例如:
//抽象类A
abstract class A
{
public abstract void A();//抽象成员,没有实现部分
}
//类B 继承自A 由于没有实现类A的抽象方法,所以也必须声明为抽象类
abstract class B : A
{
public void B()
{
}
}
//类C 继承自抽象类B
public class C : B
{
//实现抽象类A 中的抽象方法
public override void A()
{
Console.WriteLine("你好");
}
}
在非抽象类中实现抽象类时,必须实现抽象类中的每一个抽象方法,而且每个实现的方法必须和抽象类中指定的方法一样,即接受相同个数,相同类型的参数,具有同样的返回值在非抽象类中实现抽象类时,必须实现抽象类中的每一个抽象方法,而且每个实现的方法必须和抽象类中指定的方法一样,即接受相同个数,相同类型的参数,具有同样的返回值
//定义一个抽象类
public abstract class A
{
//可以被重写的方法,有实现部分
public virtual void a()
{
Console.WriteLine("人类");
}
//抽象方法,没实现部分
public abstract void Aa();
}
//定义一个类,继承自抽象类
public class B : A
{
//重写基类的虚拟方法
public override void a()
{
Console.WriteLine("中国人");
}
//实现抽象类的抽象成员
public override void Aa()
{
Console.WriteLine("河南人");
}
}
class Program
{
static void Main(string[] args)
{
B b = new B();
b.a();
b.Aa();
Console.ReadKey();
}
}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:<ahref="http://edu.csdn.net" target="blank"> http://edu.csdn.net </a>