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();
}
}
有好的建议,请在下方输入你的评论。