C# 抽象类(知识要点归纳总结)
抽象类就像是具体类和接口之间的一个过渡。抽象类具有一接口的含有抽象方法(本质上接口中的方法就是抽象方法)的特性,也具有具体类的具体方法和属性的特性。
抽象类的特点
- 抽象类就像一个具体类
抽象类类的定义类似于具体类。抽象类可以有字段和方法也可以继承其他类。 - 抽象类就像一个接口
继承抽象类的子类必须要实现该抽象类的所有抽象方法(没有语句和方法体的方法)。 - 抽象类不能实例化
抽象类不能用new创建抽象类的实例。 - 只有抽象类才能有抽象方法。
示例:
using System;
namespace 抽象类
{
internal class Program
{
private static void Main()
{
//var classBase = new ClassBase();//编译报错,无法创建抽象类的实例
var classChild=new ClassChild();
classChild.ShowLove();
classChild.Words = "abstract property : I like you !";
classChild.Content = "base property : I want you !";
classChild.WriteContent(classChild.Content);
classChild.SayWords(classChild.Words);
Console.ReadKey();
}
}
/// <summary>
/// 抽象基类
/// </summary>
internal abstract class ClassBase
{
public string Content { get; set; }//具体属性
public abstract string Words { get; set; }//抽象属性
//具体方法
public void WriteContent(string content)
{
Console.WriteLine(content);
}
//抽象方法
public abstract void SayWords(string words);
}
/// <summary>
/// 继承抽象类的子类
/// </summary>
internal class ClassChild : ClassBase
{
private string _wordss = "";
public override string Words
{
get { return _wordss; }
set { _wordss = value; }
}
public override void SayWords(string words)
{
Console.WriteLine(words);
}
public void ShowLove()
{
Console.WriteLine("I love you !");
}
}
}
输出:
I love you !
base property : I want you !
abstract property : I like you !