封装 继承 多态理解

封装 继承 多态理解一 封装 1 定义封装 将类的某些信息隐藏在类内部 private 不允许外部程序直接访问 而是通过该类提供的公共属性 public 来实现对隐藏信息的操作和访问快捷键 prop TABpropfull TAB2 封装的好处 1 隐藏类的实现细节 2 只能通过规定属性访问数据 3 方便加入控制语句 4 方便修改实现二 继承 2 1 定义继承 一个类具有另一个类的属性和方法 这个类叫子类 派生类 另一个类叫父类 基类 超类 继承的关键符号 冒号

封装 继承 多态理解

 一.封装

1.定义

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

快捷键:prop+TAB   propfull+TAB

2.封装的好处

1、隐藏类的实现细节

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

3、方便加入控制语句

4、方便修改实现

 二.继承

2.1 定义

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

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

2.2 特征:

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

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

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

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

2.3 重写(override)

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

2.4 修饰符(访问权限)

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

2.5 虚方法:virtual

1.定义

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

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

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

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

2.虚方法与一般方法的区别:

1、写法不同

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

2.6 sealed关键字

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

2.7 使用继承的好处

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

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

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

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

 三.封装

3.1 定义

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

3.2 实现多态的两个要素

1)子类重写父类方法

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

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

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

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

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

3.3 使用多态的好处

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

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

性。 //多态的真正作用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222705.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:10
下一篇 2026年3月17日 下午3:10


相关推荐

  • OFFSet_offtheroad

    OFFSet_offtheroad#defineoffsetof(s,m)(size_t)&reinterpret_cast<constvolatilechar&>((((s*)0)->m))该宏用于求结构体中一个成员在该结构体中的偏移量。第一个参数是结构体的名字,第二个参数是结构体成员的名字。该宏返回结构体structNames中成员memberName(m)的偏移量。偏移量…

    2022年8月22日
    11
  • SQL之视图与索引[通俗易懂]

    SQL之视图与索引[通俗易懂]SQL之视图与索引视图的定义、修改、使用索引的创建、查看视图人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。1.视图的创建语法:

    2022年7月22日
    12
  • IDEa快捷键_idea进入方法快捷键

    IDEa快捷键_idea进入方法快捷键一、IntelliJIDEA快捷键大全Win版一、Ctrl快捷键 快捷键 说明 常用 Ctrl+F 在当前文件进行文本查找 √ Ctrl+R 在当前文件进行文本替换 √ Ctrl+Z 撤销 √ Ctrl+Y

    2022年10月1日
    4
  • 贝叶斯优化python包_贝叶斯优化

    贝叶斯优化python包_贝叶斯优化万壑松风知客来,摇扇抚琴待留声1.文起本篇文章记录通过Python调用第三方库,从而调用使用了贝叶斯优化原理的Hyperopt方法来进行超参数的优化选择。具体贝叶斯优化原理与相关介绍将在下一次文章中做较为详细的描述,可以参考这里。Hyperopt是Python的几个贝叶斯优化库中的一个。它使用TreeParzenEstimator(TPE),其它Python库还包括了S…

    2025年8月15日
    5
  • 渗透测试神器Nessus使用教程「建议收藏」

    渗透测试神器Nessus使用教程「建议收藏」简介:

    2022年10月19日
    6
  • Vue进阶(四十三):Vuex之Mutations详解

    Vue进阶(四十三):Vuex之Mutations详解通俗的理解 mutations 里面装着一些改变数据方法的集合 这是 Veux 设计很重要的一点 就是把处理数据逻辑方法全部放在 mutations 里面 使得数据和视图分离 2 怎么用 mutations mutation 结构 每一个 mutation 都有一个字符串类型的事件类型 type 和回调函数 handler 也可以理解为 type handler 这和订阅发布有点类似 先注册事件 当触发

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号