zoukankan      html  css  js  c++  java
  • 抽象类、抽象函数/抽象方法详解

    抽象类运用


    本文提供全流程,中文翻译。

    Chinar 坚持将简单的生活方式,带给世人!

    (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)



    Chinar —— 心分享、心创新!

    助力快速理解 抽象类、抽象函数

    为新手节省宝贵的时间,避免采坑!



    全文高清图片,点击即可放大观看 (很多人竟然不知道)


    1

    Abstract Class —— 抽象类


    抽象类 —— 修饰词 : abstract

    抽象父类中的 抽象函数 是不完整的,只有方法名和参数,并没有方法体

    任何继承于抽象类的子类,都需要重 写父类(抽象类) 中的所有 抽象函数/抽象方法
    举个栗子黑白88
    下面我们举个栗子,来说明抽象类的具体用法


    2

    Abstract Parent Class —— 抽象父类


    在VS控制台程序中,创建一个抽象类

    为了便于理解, Chinar 已经用上了弱爆的拼音命名法,请高手给予理解与宽容
    举个栗子黑白88

    //无需任何引用,即可创建抽象类
    
    namespace 抽象类
    {
        /// <summary>
        /// 抽象类 —— 修饰词:abstract
        /// </summary>
        public abstract class ChouXiang//弱爆的拼音命名法,便于新手理解
        {
            /// <summary>
            /// 类中可以有 虚方法等
            /// </summary>
            public virtual void Eat() //虚方法可以重写,也可以不重写,直接继承
            {
                 Console.WriteLine("抽象父类中:吃方法");//是有方法体的
            }
    
    
            /// <summary>
            /// 指纹 —— 就是一个抽象函数。因为此函数,子类只要用到,必须要重写的。
            /// 所以就有了抽象类,这种不完整的模板 —— 没有方法体
            /// </summary>
            public abstract void FingerPrint();
            public abstract void FingerPrint1();
            public abstract void FingerPrint2();
            public abstract void FingerPrint3();
            public abstract void FingerPrint4();
            public abstract void FingerPrint5();
        }
    }

    3

    Abstract Parent Class —— 抽象父类


    在VS控制台程序中,创建一个抽象类

    为了便于理解, Chinar 已经用上了弱爆的拼音命名法,请高手给予理解与宽容
    举个栗子黑白88

    using System;
    
    namespace 抽象类
    {
        /// <summary>
        /// 人类:继承与抽象类
        /// 当一个类,继承抽象类的时候,必须实现抽象函数
        /// </summary>
        class People : ChouXiang
        {
            /// <summary>
            /// 可直接通过 VS implement missing members :实现丢失的成员,一键实现所有抽象函数的重写
            /// 必须去重写父类中的抽象函数,具体函数体,根据需求实现
            /// </summary>
            public override void FingerPrint()
            {
                Console.WriteLine("人类的指纹");
            }
    
    
            public override void FingerPrint1()
            {
                throw new NotImplementedException();
            }
    
    
            public override void FingerPrint2()
            {
                throw new NotImplementedException();
            }
    
    
            public override void FingerPrint3()
            {
                throw new NotImplementedException();
            }
    
    
            public override void FingerPrint4()
            {
                throw new NotImplementedException();
            }
    
    
            public override void FingerPrint5()
            {
                throw new NotImplementedException();
            }
        }
    }

    4

    Abstract Parent Class —— 抽象父类


    在VS控制台程序中,创建一个抽象类

    为了便于理解, Chinar 已经用上了弱爆的拼音命名法,请高手给予理解与宽容
    举个栗子黑白88

    using System;
    
    
    namespace 抽象类
    {
        /// <summary>
        /// 测试项目类:继承自人类People
        /// 由于PeoPle已经将抽象类ChouXiang中 抽象函数重写,所以下边可以直接调用PeoPle中的方法
        /// </summary>
        class Program : People 
        {
            static void Main(string[] args)
            {
                People p = new People();
                p.FingerPrint();
    
                ChouXiang c = new People(); //可以通过抽象类去声明对象,但不可以去构造.只能用其派生类构造
                c.Eat();                    //用派生类构造后,可调用ChouXiang类中函数
                c.FingerPrint();            //由于对 FingerPrint 是重写了,所以父类中的方法是不存在的。
    
                Program program = new Program();
                program.FingerPrint();
    
                Console.ReadLine();
            }
        }
    }

    控制台输出:

    人类的指纹
    抽象父类中:吃方法
    人类的指纹
    人类的指纹

    支持

    May Be —— 搞开发,总有一天要做的事!


    拥有自己的服务器,无需再找攻略!

    Chinar 提供一站式教程,闭眼式创建!

    为新手节省宝贵时间,避免采坑!


    先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


    1 —— 云服务器超全购买流程 (新手必备!)

    2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)

    3—— Windows 服务器配置、运行、建站一条龙 !

    4 —— Linux 服务器配置、运行、建站一条龙 !





    技术交流群:806091680 ! Chinar 欢迎你的加入


    END

    本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

    对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

    对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

  • 相关阅读:
    基础 ByteBuffer 和 ByteBuf
    Java 堆栈,内存分配理解
    JVM 调优参数设置
    Python 安装 matplotlib 制图
    UOJ#207. 共价大爷游长沙
    ORM学习 一 : JPA JDBC
    常见的Web攻击手段
    《Kubernetes权威指南第2版》学习(二)一个简单的例子
    五 pyJWT使用
    《Kubernetes权威指南第2版》学习(一) Kubernetes是什么
  • 原文地址:https://www.cnblogs.com/chinarbolg/p/9601397.html
Copyright © 2011-2022 走看看