欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 使用 C# 学习面向对象编程:第 8 部分

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

2025/4/4 23:57:03 来源:https://blog.csdn.net/xiefeng240601/article/details/139614979  浏览:    关键词:使用 C# 学习面向对象编程:第 8 部分

抽象方法

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

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

例如

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

例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace @abstract // 命名空间,用于组织代码
{class Program // 主程序类{// 抽象类Payabstract class Pay{protected int _basicpay = 20000; // 基本工资protected int _houserent = 15000; // 房屋租金津贴protected int _Tax = -500; // 税protected int _NetPay = -500; // 净工资// 抽象属性gradtwopublic abstract int gradtwo { get; }// 抽象属性gradonepublic abstract int gradone { get; }}// 派生类Netpay,继承自Payclass Netpay : Pay{// 计算净工资的方法public void CalculatePay(){_NetPay = _basicpay + _houserent + _Tax; // 计算净工资}// 重写抽象属性gradtwopublic override int gradtwo{get{return _NetPay; // 返回净工资}}// 重写抽象属性gradonepublic override int gradone{get{return _NetPay = _NetPay + _NetPay * 10 / 100; // 返回净工资加上10%的涨幅}}}// 主程序入口点static void Main(string[] args){Netpay o = new Netpay(); // 创建Netpay类的实例oo.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;// 抽象属性gradtwopublic abstract int gradtwo { get; }// 抽象属性gradonepublic 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类的实例oNetpay 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”方法来计算付款。

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词