C# 抽象类(知识要点归纳总结)

C# 抽象类(知识要点归纳总结)

抽象类就像是具体类和接口之间的一个过渡。抽象类具有一接口的含有抽象方法(本质上接口中的方法就是抽象方法)的特性,也具有具体类的具体方法和属性的特性。

抽象类的特点

  1. 抽象类就像一个具体类
    抽象类类的定义类似于具体类。抽象类可以有字段和方法也可以继承其他类。
  2. 抽象类就像一个接口
    继承抽象类的子类必须要实现该抽象类的所有抽象方法(没有语句和方法体的方法)。
  3. 抽象类不能实例化
    抽象类不能用new创建抽象类的实例。
  4. 只有抽象类才能有抽象方法。

示例:

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();
        }
    }

    /// 
    /// 抽象基类
    /// 
    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);

    }

    /// 
    /// 继承抽象类的子类
    /// 
    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 !

你可能感兴趣的:(C#基础)