C#封装、继承、多态(9月27)
2021/9/27 20:11:15
本文主要是介绍C#封装、继承、多态(9月27),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、封装
Why:防止类中的数据被恶意修改
封装(what):将类的某些信息隐藏在类内部(private),不允许外部程序直接访问,而是通过该类提供的公共属性(public)来实现对隐藏信息的操作和访问
快捷键:prop+TAB propfull+TAB
封装的好处:
1、隐藏类的实现细节
2、只能通过规定属性访问数据
3、方便加入控制语句
4、方便修改实现
2、继承
Why:加减 加除 乘除 减乘计算器
解决功能重复问题
继承:一个类具有另一个类的属性和方法,这个类叫子类(派生类),另一个类叫父类(基类、超类)
继承的关键符号 “:”
特征:
1、子类继承了父类的属性和方法(public、protected),但是构造方法不能被继承
2、子类使用构造方法调用父类构造方法用 base()
3、创建子类对象时,系统默认先调用父类构造方法,然后再调用子类构造方法
4、子类使用父类的属性和方法用 base 关键字(public、protected)
重写:
重写:在子类和父类中,子类中的方法名称和父类方法名称相同,参数相同
重载(overload):在同一个类中,方法名称相同,参数不同(个数、类型),与返回值无关
修饰符:
public(本类、外部类) private(本类) protected(本类 子类) internal(本类 子类)
虚方法:
在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员方法称为虚方法。
虚方法的作用就是实现多态性(Polymorphism),多态性是将接口与实现进行分离。
在基类的函数中声明关键字virtual,就可以在其派生类中通过关键字override重写该方法。重写后的virtual方法依旧是virtual方法。
当有一个定义在类中的方法需要在继承类中实现时,可以使用虚方法。
虚方法和一般方法的区别:
1、写法不同
2、一般方法在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死的!而虚方法在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的方法。
sealed关键字:
C#提供了一个sealed 修饰符,此修饰符会阻止其他类从该类继承。
使用继承的好处:
1、继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。(拓展新功能)
2、继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
3、继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
4、继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性
3、多态
多态(what):多态是同一个行为具有多个不同表现形式或形态的能力。
多人做一件事情,结果不一样
多态性可以是静态的或动态的。在静态多态性中,方法的响应是在编译时发生的。在动态多态性中,方法的响应是在运行时发生的。
静态多态性:在编译时,方法和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。分别为:方法重载、运算符重载
动态多态性是通过 抽象类 和 虚方法 实现的。
使用多态的好处
应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的
可复用性。//继承
派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护
性。 //多态的真正作用
这篇关于C#封装、继承、多态(9月27)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#