抽象类详解一

using System;
namespace cSharpJichu
{
    public class BaseClass
    {
        private string a = string.Empty;
        public void RunAtBaseClassA()
        {
            Console.WriteLine("RunAtBaseClassA");
        }

        public virtual void RunAtBaseClassVirtual()
        {
            Console.WriteLine("RunAtBaseClassVirtualA");
        }
    }

    public abstract class AbstractClassA : BaseClass
    {
        string aStr = string.Empty;

        public abstract void AbstractMethodA();

        public void AbstractClass()
        {
            Console.WriteLine("RunAtAbstractClassA");
        }
    }

    class ExtendAbstractClass : AbstractClassA
    {
        private string a = string.Empty;
        public override void AbstractMethodA()
        {
            Console.WriteLine("RunAtExtendAbstractClass");
        }
    }

    public abstract class AbstractClassB
    {
        string aStr = string.Empty;
        internal abstract void AbstractMethodB();
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("------------------ 以下是抽象类测试 ------------------------");
            ExtendAbstractClass abc = new ExtendAbstractClass();
            abc.AbstractClass();
            abc.AbstractMethodA();

            Console.WriteLine("------------------ 抽象类也可以继承基类 ------------------------");
            Console.WriteLine("------------------ 下面的是抽象类继承了BaseClass类后 ------------------------");
            Console.WriteLine("------------------ 继承抽象类的子类ExtendAbstractClass对象访问BaseClass类的方法 ------------------------");
            abc.RunAtBaseClassA();
            abc.RunAtBaseClassVirtual();
            Console.WriteLine("------------------ 以上是抽象类测试 ------------------------");
            Console.Read();
        }
    }

}

运行结果:



总结:

1.抽象类的方法没有实现体,只有声明. 

2.抽象类可以包含抽象方法,非抽象方法,变量 .

3.包含有抽象方法的类一定是抽象类.

4.抽象类不能被实例化.

5.抽象方法不能用private修饰,其他的修饰符则可以.

6.当子类继承抽象类时,子类必须重写抽象类的所有抽象方法.

7.抽象类也可以继承基类,抽象类继承了BaseClass类后,继承抽象类的子类ExtendAbstractClass对象访问BaseClass类的方法.

8.抽象类在继承基类时,基类的访问修饰符的权限不能小于抽象类的访问修饰符.

原文地址:https://www.cnblogs.com/bicabo/p/1646550.html