面向对象编程语言三大特性

本文详细介绍了面向对象编程的三大特性——封装、继承和多态在C#中的应用。封装通过访问修饰符实现数据保护,继承用于解决功能重复问题并保留父类特性,多态则提高了代码的扩展性和维护性。文中还涉及到虚方法、重写、重载以及密封关键字等概念,旨在帮助读者深入理解C#的面向对象编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 为什么要用封装?

防止类中的数据被恶意修改

2.什么是封装?

将类的某些信息隐藏在类内部(private),不允许外部程序直接访问,而是通过该类提供的公共属性(public)来实现对隐藏内容的操作和访问。

3.封装怎么用?

这边开发环境是vs2019

快捷键:prop+TAB(开发封装)//这种封装不能修改属性的限制

public int Age { get; set; }

propfull+TAB(限制封装)

 private int age;//private:私有  成员变量

        public int Age  //public:公共  属性

        {

            get { return age; }

            set {

                if (value> 0)

                {

                    age = value;

                }

                else

                {

                    Console.WriteLine("年龄必须大于等于0");

                }

            }

        }

4.封装的好处

  1. 隐藏类的实现细节
  2. 只能通过规定属性访问数据
  3. 方便加入控制语句

继承 

什么是继承?

一个类具有另一个类的属性和方法,这个类叫子类(派生类),另一个类叫父类(基类、超类)

继承的关键符号://这边是C#语言 (冒号):

为什么要用继承?

解决功能重复问题

继承的特性

  1. 子类继承了父类的属性和方法(public、protected),但是构造方法不能被继承
  2. 子类使用构造方法调用父类的构造方法用base();
  3. 创建子类对象时,系统默认先调用父类构造方法,然后再调用子类构造方法
  4. 子类使用父类的属性和方法用 base 关键字(public、protected)

注意:当父类有有参数构造方法时,如果子类有构造方法(无参或有参),要求父类必须有一个无参构造方法。如果子类没有构造方法,父类也需要提供一个无参构造方法。如果不提供,子类构造方法会报错!

重写

在子类和父类中,子类中的方法名称和父类方法名称相同,参数相同

重载

在同一个类中,方法名称相同,参数不同(个数、类型),与返回值无关

修饰符(访问权限)

public(本类、外部类)、private(本类)、protected(本类、子类)、internal(本类、子类)

虚方法:virtual

在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员方法称为虚方法。

虚方法的作用就是实现多态性(Polymorphism),多态性是将接口与实现进行分离。

在基类的函数中声明关键字virtual,就可以在其派生类中通过关键字override重写该方法。重写后的virtual方法依旧是virtual方法。

当有一个定义在类中的方法需要在继承类中实现时,可以使用虚方法。

虚方法与一般方法的区别

1、写法不同

2一般方法在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死的!而虚方法在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的方法。

sealed关键字

​​​​​C#提供了一个sealed修饰符,此修饰符会阻止其他类从该类继承。

使用继承的好处

  1. 继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。(拓展新功能

  2. 继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系

  3. 继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性

  4. 继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性

多态

为什么用多态?

优化重复代码,使得代码可扩展性、可维护性较方便。

多态是什么?

多态是同一个行为具有多个不同表现形式或形态的能力。

多态性可以是静态的或动态的。在静态多态性中,方法的响应是在编译时发生的。在动态多态性中,方法的响应是在运行时发生的。

静态多态性:在编译时,方法和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。分别为:方法重载运算符重载

动态多态性是通过 抽象类 和 虚方法 实现的。

实现多态的两个要素

  1. 子类重写父类方法
  2. 使用父类的类型(子类转换为父类:向上转型)

 向上转型:将子类对象转为父类对象。此处父类对象可以是接口或抽象类。

转化后的父类对象具有父类所有方法,若方法被子类重写override,那么实际调用时,调用的是重写后的实现。

向下转型:把父类对象转为子类对象。

    转化后的子类对象,跟一般的继承子类对象一样。具有子类所有方法(包括重写方法)+父类所有方法(被重写的方法,按重写的算。)

使用多态的好处

  1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承

  2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护 性。 //多态的真正作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不会Hello World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值