• 面向对象语言:继承关系教程


    面向对象:继承


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

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

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



    Chinar —— 心分享、心创新!

    助力理解 语法中 类 的继承关系

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



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


    1

    Inherit —— 继承


    C# —— 面向对象编程的三大特性:封装、继承、多态

    这里我们来详细说说: 继承

    通过简单的例子,来说明继承关系
    举个栗子黑白88
    3个子类,同时继承一个父类

    那么父类中的函数,子类都将拥有

    用中国的老话 “子承父业”理解,很是合适

    也可以理解为: 老子会什么,儿子就会什么


    2

    Parent Class:Enemy —— 父类:总敌人类


    我们以控制台程序,来举个例子

    Enemy —— 敌人类,可以包含很多种敌人的父类

    可以具备敌人通用的所有属性 / 函数
    举个栗子黑白88

    using System;
    
    /// <summary>
    /// 这里用中文来写命名空间,为了方便理解
    /// </summary>
    namespace 继承
    {
        /// <summary>
        /// 敌人总类
        /// </summary>
        class Enemy
        {
            public void Ai()
            {
                Console.WriteLine("这是怪物智能系统");
            }
    
    
            public void Move()
            {
                Console.WriteLine("怪物移动方法");
            }
    
    
            private float hp = 10; //血量
            private float speed;   //速度
    
            /// <summary>
            /// 速度
            /// </summary>
            public float Speed
            {
                get { return speed; }
    
                set { speed = value; }
            }
    
            /// <summary>
            /// HP血量
            /// </summary>
            public float Hp
            {
                get { return hp; }
    
                set { hp = value; }
            }
        }
    }

    3

    Subclass:Boss ——子类:首领


    Boss —— 首领:属于怪物的一种,同样属于敌人,所以可以继承 Enemy 敌人类

    这样,不用再 Boss 类中写任何方法,首领就具备敌人通用的所有属性 / 函数
    举个栗子黑白88

    using System;
    
    
    namespace 继承
    {
        /// <summary>
        /// 首领怪物
        /// </summary>
        class Boss : Enemy
        {
            /// <summary>
            /// 攻击
            /// </summary>
            public void Attack()
            {
                Console.WriteLine("Boss正在猛烈的摇晃");
            }
    
            /// <summary>
            /// 测试Boss
            /// </summary>
            /// <returns></returns>
            public float TestBoss()
            {
                return Hp = 100;
            }
        }
    }

    4

    Subclass:Enemy1、Enemy2 ——子类:敌人1、敌人2


    Enemy1、Enemy2 —— 代表两种敌人类型:属于怪物的一种,同样属于敌人,所以可以继承 Enemy 敌人类

    这样,不用再 Enemy1、Enemy2 类中写任何方法,默认两种怪物,就具备敌人通用的所有属性 / 函数
    举个栗子黑白88

    class Enemy1 : Enemy
        {
        }
    class Enemy2 : Enemy
        {
        }

    5

    Test Main ——主入口:测试


    Enemy1、Enemy2 —— 代表两种敌人类型:属于怪物的一种,同样属于敌人,所以可以继承 Enemy 敌人类

    这样,不用再 Enemy1、Enemy2 类中写任何方法,默认两种怪物,就具备敌人通用的所有属性 / 函数
    举个栗子黑白88

    using System;
    
    
    namespace 继承
    {
        class Program
        {
            /// <summary>
            /// 主入口
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                Boss boss = new Boss(); //boss对象
                boss.Ai();              //这个是boss的智能系统
                Console.WriteLine();
    
                Enemy e = new Boss(); //由其派生类完成了初始化,所以e对象Enemy对象
                e.Move();             //在这里 相当于e.move
    
                Console.WriteLine();
    
                ((Boss) e).Attack(); //强转为Boss类型,就可以访问其中的方法
                Console.WriteLine(((Boss) e).TestBoss());
                Console.ReadLine();
            }
        }
    }

    输出结果:

    这是怪物智能系统
    
    怪物移动方法
    
    Boss正在猛烈的摇晃
    100

    支持

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


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

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

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


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


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

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

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

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





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


    END

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

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

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

  • 相关阅读:
    读取Config文件工具类 PropertiesConfig.java
    MD5编码工具类 MD5Code.java
    文件上传工具类 UploadUtil.java
    删除文件夹工具类 DeleteFolder.java
    目录处理工具类 DealWithDir.java
    文件/目录部分处理工具类 DealDir.java
    目录操作工具类 CopyDir.java
    功能更强大的格式化工具类 FormatUtils.java
    日期转换工具类 CommUtil.java
    MVC学习笔记1-MVC家族间的区别
  • 原文地址:https://www.cnblogs.com/chinarbolg/p/9601399.html
Copyright © 2020-2023  润新知