栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C#封装,继承,多态.抽象类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#封装,继承,多态.抽象类

一,封装 1.定义

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

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

How:

快捷键:prop+TAB   propfull+TAB

//这种封装不能修改属性的限制  prop+TAB

When:当别人想恶意修改数据时

封装的好处

1、隐藏类的实现细节

2、只能通过规定属性访问数据

3、方便加入控制语句

4、方便修改实现

二.继承 1.定义

Why:解决功能重复问题

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

继承的关键符号   :(冒号)

特征:

    1、子类继承了父类的属性和方法(public、protected),但是构造方法不能被继承

    2、子类使用构造方法调用父类构造方法用 base()

    3、创建子类对象时,系统默认先调用父类构造方法,然后再调用子类构造方法

4、子类使用父类的属性和方法用  base 关键字(public、protected)

5、转型:子类可以赋值给父类,但是父类不能赋值给子类

注意:

当父类有有参构造方法时,如果子类有构造方法(无参或有参),要求父类必须有一个无参构造方法。

如果子类没有构造方法,父类也需要提供一个无参构造方法。

如果不提供,子类构造方法会报错!

重写(override):

重写:父类(virtual)  子类:override

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

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

修饰符(访问权限):

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

虚方法:virtual

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

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

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

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

虚方法与一般方法的区别

1、写法不同

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

使用继承的好处

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

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

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

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

三.多态
  1. 定义

Why:

对重复代码频繁修改,代码可扩展性、可维护性差,如何优化?

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

多人做一件事情,结果不一样

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

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

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

  1. 实现多态的两个要素(how):

1)子类重写父类方法

2)使用父类的类型(子类转换为父类:向上转型)

使用多态的好处

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

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

性。 //多态的真正作用

四.抽象类

定义

Why:

计算器类(父类)里面有加减乘除四个功能都实现了,但是很子类继承后,有些方法都自己重写了,这个时候父类里面的这些方法功能就没有意义了。所以有些方法不需要都实现了,只需要声明即可(抽象方法)。

抽象类(what):类是一个具有相同特征和行为的抽象,而抽象类(class 前加上 abstract)没有指出行为的具体细节,而由他的子类去实现相应的行为。

把普通类前面加一个abstract关键字就是抽象类。

含有一个或多个抽象方法的类

抽象类的特征:

1、不能创建一个抽象类的实例。(//Father f = new Father();Father是父类)

2、通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。

4、抽象方法特征:

1、抽象方法没有方法体

2、抽象方法必须在抽象类里

3、抽象方法必须在子类中被实现,除非子类是抽象类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号