C#中的抽象类(abstract)。
1:抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
2:抽象类不能被实例化
3:抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
4:具体派生类必须覆盖基类的抽象方法
5:抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。
6:抽象类中的非抽象方法,如果该方法是静态,直接通过类调用就好,如果不是静态的,则需要通过继承这个抽象类的子类实例化的对象来调用。
7:抽象类中包含属性、虚方法、普通方法、抽象方法、构造方法、普通成员变量、静态成员变量
8:抽象类的成员可以使用公有或其他修饰符,接口中成员是隐式公有的,不需要修饰;
9:抽象类是概念的抽象,接口注重行为,抽象类不支持多重继承,而一个类可以实现多个接口。
下边是实例:
using System;namespace @abstract
{class Program{static void Main(string[] args){// 实例化对象son son = new son();// 调用重写后的抽象方法son.getClass();// 调用抽象类中非抽象方法son.GetResult();// 调用抽象类中的静态非抽象方法AbsClass.GetUser();Console.ReadLine();}}/// <summary>/// 子类,继承抽象类/// </summary>public class son : AbsClass{public override void getClass(){Console.WriteLine("我继承了AbsClass抽象类,并实现了其中的方法");}}/// <summary>/// 声明一个抽象类/// </summary>public abstract class AbsClass{/// <summary>/// 非抽象的字段/// </summary>public int number;/// <summary>/// 构造函数/// </summary>public AbsClass(){number = 10;}/// <summary>/// 非抽象方法/// </summary>public void GetResult(){Console.WriteLine("非抽象方法:非抽象变量值为"+ number);}/// <summary>/// 非抽象静态方法/// </summary>public static void GetUser(){Console.WriteLine("我是非抽象静态方法");}/// <summary>/// 抽象方法/// </summary>public abstract void getClass();}}
有好的建议,请在下方输入你的评论。