zoukankan      html  css  js  c++  java
  • 抽象类详解一

    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.抽象类在继承基类时,基类的访问修饰符的权限不能小于抽象类的访问修饰符.

  • 相关阅读:
    【原创】解决向工程中添加Megacore 文件在文件列表中没有出现目标文件的问题
    (笔记)找工作,该怎么进补
    (原创)结构体位域操作
    (原创)TCP/IP学习笔记之IP(网际协议)
    (原创)确认大端模式或小端模式(最直接有效的方法)
    (原创)HDL中的unsigned与signed
    (原创)TCP/IP学习笔记之概述
    (笔记)往一个指定的地址读写一个值
    (笔记)我的EDN博客被评为专家博客啦
    (原创)同步复位与异步复位
  • 原文地址:https://www.cnblogs.com/bicabo/p/1646550.html
Copyright © 2011-2022 走看看