使用 C# 学习面向对象编程:第 8 部分

news2025/2/2 5:59:24

抽象方法

亲爱的读者,本文是 OOP 的第四大支柱,也是最后一大支柱。对于 OOP 初学者来说,这很容易让人困惑。因此,我们用非常简单的语言提供了一个示例。

“抽象用于管理复杂性。无法创建抽象类的对象。抽象类用于继承。”

例如

当我们开车时,我们经常需要换挡,但我们并不关心车辆发动机的内部细节。对我们来说重要的是我们必须换挡,仅此而已。这是一个抽象概念;它只显示对用户重要的细节。

例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace @abstract // 命名空间,用于组织代码
{
    class Program // 主程序类
    {
        // 抽象类Pay
        abstract class Pay
        {
            protected int _basicpay = 20000; // 基本工资
            protected int _houserent = 15000; // 房屋租金津贴
            protected int _Tax = -500; // 税
            protected int _NetPay = -500; // 净工资
            // 抽象属性gradtwo
            public abstract int gradtwo { get; }
            // 抽象属性gradone
            public abstract int gradone { get; }
        }

        // 派生类Netpay,继承自Pay
        class Netpay : Pay
        {
            // 计算净工资的方法
            public void CalculatePay()
            {
                _NetPay = _basicpay + _houserent + _Tax; // 计算净工资
            }

            // 重写抽象属性gradtwo
            public override int gradtwo
            {
                get
                {
                    return _NetPay; // 返回净工资
                }
            }

            // 重写抽象属性gradone
            public override int gradone
            {
                get
                {
                    return _NetPay = _NetPay + _NetPay * 10 / 100; // 返回净工资加上10%的涨幅
                }
            }
        }

        // 主程序入口点
        static void Main(string[] args)
        {
            Netpay o = new Netpay(); // 创建Netpay类的实例o
            o.CalculatePay(); // 调用CalculatePay方法计算净工资
            // 输出Officer Grad II和Officer Grad I的工资
            Console.WriteLine("Officer Grad II pay = {0} \nOfficer Grad I pay = {1}", o.gradtwo, o.gradone);
            Console.ReadKey(); // 等待用户按下任意键,以防程序立即退出
        }
    }
}

输出


亲爱的读者,我需要你对此格外关注。

步骤1

// 抽象类Pay
abstract class Pay
{
    // 基本工资
    protected int _basicpay = 20000;
    // 房屋租金津贴
    protected int _houserent = 15000;
    // 税
    protected int _Tax = -500;
    // 净工资
    protected int _NetPay = -500;

    // 抽象属性gradtwo
    public abstract int gradtwo { get; }
    // 抽象属性gradone
    public abstract int gradone { get; }
}

我定义了一个抽象类“pay”,它有一个受保护的变量,只能由同一个类或派生类访问。这些成员变量都是用值初始化的。

第2步

class Netpay : Pay
{
    public void CalculatePay()
    {
        _NetPay = _basicpay + _houserent + _Tax;
    }

    public override int gradtwo // Overriding property
    {
        get
        {
            return _NetPay;
        }
    }

    public override int gradone // Overriding property
    {
        get
        {
            return _NetPay = _NetPay + _NetPay * 10 / 100;
        }
    }
}

在这一步中,我们定义了从抽象基类“pay”派生的类“Netpay”。

在该类中,我们已将“CalculatePay”方法定义为具有公共访问修饰符以计算员工的工资。在工资计算过程中,我们使用了来自基类的受保护变量。在这里,我们重写了两个属性“grade”和“grade two”,它们将返回“_NetPay”的值。

步骤3

// 主程序入口点
static void Main(string[] args)
{
    // 创建Netpay类的实例o
    Netpay o = new Netpay();
    // 调用CalculatePay方法计算净工资
    o.CalculatePay();
    // 输出Officer Grad II和Officer Grad I的工资
    Console.WriteLine("Officer Grad II pay = {0} \nOfficer Grad I pay = {1}", o.gradtwo, o.gradone);
    // 等待用户按下任意键,以防程序立即退出
    Console.ReadKey();
}

在无效主会话中,我们创建了“Netpay”类的对象。使用该对象,我们调用“CalculatePay”方法来计算付款。

因此用户只关心员工的工资和产出,而不必了解工资是如何计算的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11_2、多态性:虚函数

虚函数与抽象类 虚函数概念声明虚析构函数 抽象类纯虚函数抽象类 虚函数 概念 在赋值兼容规则中,基类类型的指针指向派生类对象时,通过此指针只能访问从基类继承来的同名成员。 如果我们希望通过指向派生类对象的基类指针,访问派生类中的同…

淘宝评论数据信息接口

淘宝评论API接口是一种用于获取淘宝用户评论信息的接口,联讯数据可以帮助商家和消费者获取到商品的评价信息,以便更好地了解商品的质量和用户体验。以下是关于淘宝评论API接口的一些内容: 一、接口功能 淘宝评论API接口提供了商品评价信息的…

西格玛 ------ 第18个希腊字母学习

名词解释 在数学中,我们把∑作为求和符号使用,用小写字母σ,表示标准差。 ∑符号表示求和,读音为sigma,英文意思为Sum,Summation,汉语意思为“和”“总和”。 例1 公式使用说明:…

数据资产解决方案一站式资料大全:数据资产从业人员必备,附下载。数据资产解决方案,数据资产平台建设方案,数据资产入表,数据资产入表流程,数据资产评估案例

在数据资产的建设中,各种解决方案、标准规范、顶层设计指南等文档资料是不可或缺的参考资源。拥有一套全面、系统的数据资产解决方案资料库,无疑能够为工作提供极大的便利和支持。 一站式数据资产解决方案大全资源包,包含政策汇编、整体解决…

HR:对不起,我们不考虑gap超过3个月的简历

关于 gap,瑶琴或许能有些发言权,在 23 年的金三银四时段,瑶琴因为各种原因,选择了裸辞。 这也是瑶琴第一次裸辞,还是在大裁员时代,对这段经历感兴趣的朋友可以看这篇文章:2023 裸辞 就业 瑶琴…

OpenAI前联合创始人埃隆·马斯克 (Elon Musk) 撤销对 OpenAI 的诉讼

埃隆马斯克 (Elon Musk) 撤销了对 OpenAI 及其首席执行官萨姆奥尔特曼 (Sam Altman) 的诉讼,指控该公司违反合同,并据称放弃了创造人工智能技术造福人类的使命。据 CNBC 早些时候报道,该案在没有偏见的情况下被驳回,这意味着马斯克…

SAP 使用BAPI更改分配字段ZUONR不生效解决方案

需求: 使用BAPI变更财务凭证上的ZUONR分配字段,正常情况下使用BAPI:FI_DOCUMENT_CHANGE或者FI_ITEMS_MASS_CHANGE都是可以进行变更的,但是项目上要变更的科目类型是KZ,导致这两个BAPI都没办法进行更改,故对此BAPI进行…

电商平台API电商平台数据传输(商品订单店铺数据采集)

API(Application Programming Interface)是一种用于应用程序之间相互通信和交互的接口。它定义了一组规范和协议,允许软件系统之间传递数据和请求服务。 API的基本概念包括: 1. 接口:API作为接口,提供了一…

自动同步库数据——kettle开发36

kettle中的那些人工智能。 一、kettle的AI能力目录 跨库同步 2.自动开发 3.自动优化 二、AI实例 1、跨库同步 sqlsever表同步至oracle数据库 1.1源库sqlserver 1.2目标库oracle 1.3可视化跨库同步 使用多表复制向导 选择跨库的表,下一步下一步,即可…

ZL-22A足趾容积测量仪(Plus)在药理学研究上的作用不容忽视

简单介绍: 足趾容积测量仪(Plus)是用于解热药筛选和鉴定的仪器,是一种通过测量鼠足趾肿胀后的恢复过程来评价药的效价,了解药作用时间和药效规律的仪器。 详情介绍: 1、显示:5寸触摸屏 2、显示分辨率&…

Go API

Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。官方位置:https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

Permute 3 mac版:一键转换,格式无忧

Permute 3是一款强大而灵活的多媒体格式转换工具,它以其高效、易用和广泛兼容的特性,成为了众多用户处理媒体文件的得力助手。 Permute 3 Mac获取 首先,Permute 3支持广泛的媒体格式,无论是视频、音频还是图片,都能轻…

三篇卫星切换的论文

目录 一、Energy-Aware Satellite Handover based on Deep Reinforcement Learning 1、题目翻译 2、来源 3、内容 二、A Reliable Handover Strategy with Second Satellite Selection in LEO Satellite Networks 1、题目翻译 2、来源 3、内容 三、User Grouping-Based…

HBase中Master初始化错误~

ERROR:org.apache.hadoop.hbase.PleaseHoldException:Master is initializing 1、停止HBase运行 2、启动zookeeper中的zkCli.sh服务 ./zookeeper/bin/zkCli.sh 3、执行完毕显示以下结果,删除habse文件夹 4、重新启动HBase即可。

弹幕逆向signature、a_bogus

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载&a…

电子招投标系统:企业战略布局下的采购寻源利器

在当今商业环境中,企业对于采购管理的效率和透明度要求日益提高。鸿鹄电子招投标系统,一款基于Java技术的电子招标采购软件,旨在为企业提供一个公平、公开、公正的采购平台,同时降低成本,提升采购质量和速度。 项目说…

Python基础教程(十):装饰器

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

R语言数据探索和分析22-使用随机森林和聚类算法探索和预测健康状况

一、研究背景 在两个实验中,使用了一组综合性的生物统计数据来探索和预测健康状况(特别是疾病的发生)。实验的核心在于应用高级数据分析技术,具体包括随机森林分类和聚类分析,来洞察和预测个体的健康状况。首先&#…

如何挑选优质的气膜建筑生产厂家—轻空间

随着气膜建筑在各个领域的应用越来越广泛,市场上出现了众多气膜建筑生产厂家。为了确保您选择到高质量的产品和可靠的服务,以下是一些在挑选气膜建筑生产厂家时需要考虑的重要因素。 1. 经验与专业知识 厂家的经验是评估其能力和信誉的重要指标。选择具有…

基于springboot实现影院订票系统项目【项目源码+论文说明】

基于springboot实现影院订票系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本影院订票系统就是在这样的大环境下诞生,其可以帮助管理者在…