抽象类、抽象函数/抽象方法详解

简介: 抽象类运用本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分享、心创新!助...

抽象类运用


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

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

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

相关文章
|
6月前
|
机器学习/深度学习 数据采集 算法
大模型应用:K-Means/LDA + 千问大模型:无监督文本自动打标完整方案.85
本文介绍“聚类算法+大模型”无监督自动打标方案:先用K-Means/LDA对海量无标签文本(如电商评论、客服工单)自动分组,再由大模型为每簇生成可理解的业务标签与语义解释,实现从“类1/类2”到“物流慢”“价格争议”等高价值洞察的跃迁,显著降本增效。
834 6
|
数据采集 人工智能 自然语言处理
Llama 3.1发布:4050亿参数模型,迄今为止最强的开源大模型之一
Meta宣布发布Llama 3.1 405B,这一目前公开的最大且最先进的语言模型,标志着开源语言模型新时代的到来。Llama 3.1 405B不仅在常识理解、数学、工具使用及多语言翻译等功能上媲美顶尖AI模型,其8B和70B版本亦支持多种语言,拥有长达128K的上下文理解能力。该模型在150多个多语言基准测试中表现出色,并经过广泛的人工评估。为克服大规模训练挑战,Meta采用标准解码器架构和迭代后训练策略,大幅提升了数据质量和模型性能。此外,Llama 3.1通过监督微调、拒绝采样和直接偏好优化等手段提高了模型对指令的响应性和安全性。
721 2
|
网络协议 数据库 网络架构
OSPF 四种设备角色:IR、ABR、BR、ASBR
【4月更文挑战第5天】
5564 2
OSPF 四种设备角色:IR、ABR、BR、ASBR
|
前端开发 定位技术 API
二、前端高德地图、渲染标记(Marker)引入自定义icon,手动设置zoom
文章介绍了如何在前端使用高德地图API渲染标记(Marker),并引入自定义图标,同时展示了如何手动设置地图的缩放级别。
2586 1
|
JavaScript 前端开发 开发者
Layui layer 弹出层的使用【笔记】
本文介绍了Layui的layer弹出层组件的使用方法,包括如何通过在线CDN引入Layui的CSS和JS文件,以及如何使用layer.open(options)开启弹出层和layer.close(index)关闭弹出层。文章详细说明了弹出层类型的分类、options选项的参数配置,以及回调函数的使用。通过示例代码,展示了如何创建不同类型的弹出层,包括对话信息框、页面层、内联框架层、加载层和tips层。
|
存储 人工智能 自动驾驶
谈谈数据管理的前世今生
我第一次接触数据仓库是在20世纪末。它给我留下了深刻的印象,因为它是管理数据的第一个真正的体系结构方法,在此之前,我已经在异构数据库和点对点应用程序接口的世界中工作了多年。
谈谈数据管理的前世今生
剑指offer_链表---从尾到头打印链表
剑指offer_链表---从尾到头打印链表
233 0
开发指南—Sequence—隐式用法—CREATE TABLE
在为拆分表或广播表的主键定义AUTO_INCREMENT后,Sequence可以用于自动填充主键,由PolarDB-X自动维护。 扩展标准建表语法,增加了自增列的Sequence类型,如果未指定类型关键字,则默认类型为GROUP。PolarDB-X自动创建的、跟表相关联的Sequence名称,都是以AUTO_SEQ_为前缀,后面加上表名。
|
机器学习/深度学习 人工智能 测试技术

热门文章

最新文章