Python 和 Java 基础对比 10 —— 类的封装、继承和多态
off999 2024-10-25 13:44 41 浏览 0 评论
一、Python 类的封装、继承和多态
封装
继承
Python 支持多父类的继承机制,所以需要注意圆括号中基类的顺序,若是基类中有相同的方法名,并且在子类使用时未指定,Python 会从左至右搜索基类中是否包含该方法。一旦查找到则直接调用,后面不再继续查找。解决了多重继承的冲突问题。
多态
狗、猫、猪都继承了动物类,并各自重写了 kind 方法。show_kind () 函数接收一个 animal 参数,并调用它的 kind 方法。可以看出,无论我们给 animal 传递的是狗、猫还是猪,都能正确的调用相应的方法,打印对应的信息。这就是多态。
二、Java 类的封装、继承和多态
封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
1、封装的优点
① 良好的封装能够减少耦合。
② 类内部的结构可以自由修改。
③ 可以对成员变量进行更精确的控制。
④ 隐藏信息,实现细节。
2、如何理解 Java 的封装?
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,常见的实现方式就是:getter、setter。
假设我们的类 Person 是这样:
如果在外部代码使用它,则需要:
但是,现实中如果很多外部代码都使用了 Person 这个类;某一天,如果这个类的 age 需要换成 String 类型,那么,外部使用它的任何地方都需要需改 xxx.age="xxx"。
如果我们使用 getter、setter
这样外部其他地方就不需要改了。
我们在 getter、setter 中还可以对成员变量进行精准的控制
继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。如下图
如果不用继承,代码可能这样
我们可以发现里面有很多重复性的代码。
如果我们使用继承
1、继承的注意事项
① 子类只能继承父类非私有的成员(成员方法和成员变量)
② 子类不能继承父类的构造方法,但是可以通过 super 关键字去访问父类构造方法
this 和 super 的区别?
this 代表本类对象的引用,super 代表父类存储空间标识。
【你一定遇到过Java 面试继承相关题目】
第一关:
输出结果:
第二关:
输出结果:
Java 是单继承的,那为什么不能允许多继承?
假设有一个老虎类,既继承父类猫科,又继承父类动物科,如果两个父类都有一个“吃”的方法,那么当我们调用 “叫” 这个方法时,它就不知道是猫科叫还是动物叫了,这就是多重继承的冲突。
多态
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。
1、多态的优点
① 消除类型之间的耦合关系
② 可替换性
③ 可扩充性
④ 接口性
⑤ 灵活性
⑥ 简化性
2、多态存在的三个必要条件
【初级面试必问:重写和重载的区别?】
① 重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。
② 重载
是指一个类中方法名称相同,但参数的个数,类型或顺序不同与返回值无关!
注意:比如说你方法名fun相同,参数个数,类型顺序相同,但是返回值一个是 void,一个是 String,这不构成重载。试想一下,如果我们调用这个方法,fun(a,b),机器如何判断我们是调用哪一个呢?结论:不要让机器做不确定的事情。
① 向上转型:将一个子类的引用赋给一个超类变量,编译器是允许的,不用进行强制类型转换。
格式: 超类 超类变量 = new 子类 ();
② 向下转型:但是将一个超类的引用赋给 一个子类变量,必须进行强制类型转换,这样才能够通过运行时的检查
格式: 子类 子类对象变量名 =(子类) 父类对象引用
结论:当超类类变量引用子类对象
访问成员变量时:访问的是父类的成员变量
访问成员方法时:先访问的是超类的此方法,如果此方法被子类覆盖,则调用子类的方法。并且不能访问子类特有的方法
输出结果:
相关推荐
- 电脑频繁总自动关机(电脑经常性自动关机)
-
电脑总是自动关机原因如下 1、原因一:设置的问题 有的用户会在电脑上安装管家类软件,这些软件里会有一些设置预定时间关机的功能,比如设置为17:00关机,那么到了下午5点后它就会自动关机,一般检查一...
- 邮箱注册百度账号(邮箱注册百度帐号)
-
要使用邮箱注册天翼云盘,首先需要打开天翼云盘的官方网站。在注册页面中,选择使用邮箱注册并输入您的邮箱地址。然后,按照提示填写您的个人信息,包括用户名、密码等等。最后,点击注册按钮,等待验证邮件的发送。...
- 台式电脑截屏键快捷方式(台式电脑的截图快捷键在哪)
-
方法/步骤1第一个办法自然是我们最常见最简单的,使用“PrintScreen”键截图了。点击“PrintScreen”键,我们就可以直接截取全部屏幕,找个对话框或者文字区域粘贴就好了。我截的图是这样的...
- cad2014密钥001f1不对(cad2014密钥001f1无效)
-
Excel中序号要想输成001,我们可以进行如下的操作,我们先将所有输入序号的这一列全部选定,也就是点击英文字母这一列就可以全部选定了,然后我们在这个选定的区域的状拍下去,点击鼠标右键,再点击数值,再...
- xp强行删除管理员开机密码(windowsxp强行删除开机密码)
-
要清除WindowsXP开机密码,首先需要进入安全模式,然后进入控制面板,选择用户账户设置,再选择删除密码或更改密码选项,输入当前密码,然后将密码字段留空即可清除密码。如果忘记了密码,可以使用软件工...
- 台式机u盘装win10系统教程(台式机u盘安装win10)
-
答/具体方法如下一、准备工作1、8G或更大容量空U盘2、制作pe启动盘:微pe工具箱怎么制作u盘启动盘(UEFI&Legacy双模式)3、win10系统下载:ghostwin1064位官方...
-
- 笔记本黑屏了怎么唤醒(笔记本黑屏了怎么唤醒电脑)
-
1.笔记本电脑电池没电,自动关机之后,最好是尽快给电脑充电。2.带电脑冲一会电之后,才开机使用电源键开机。3.有些电脑在电池没电自动关机之后,会进入假关机状态,只要连接电源就会自动重启。4.在电脑使用的时候,最好是保证电源。步骤/方式1任意...
-
2025-11-17 18:51 off999
-
- windows10亮度调节在哪(windows10设置亮度调节)
-
win10屏幕亮度可在系统显示设置中调节。win10调节屏幕亮度的方法步骤如下:1、首先在桌面空白位置点击鼠标右键,选择“显示设置”选项,如图所示。2、在显示页面,在右侧找到“更改亮度”选项,点击滑块左右滑动即可调节屏幕亮度,如图所示。3、...
-
2025-11-17 18:03 off999
- u盘提示写保护 怎么取消啊(u盘写保护取消不了)
-
要解除U盘的写保护,可以使用以下方法:1.检查U盘上的物理写保护开关,将其移到关闭状态。2.通过命令行输入"diskpart"命令打开磁盘工具,选择U盘并输入"attribut...
- 如何重装win7电脑系统(如何重装win7电脑系统)
-
重装win7,就要先下载一个纯净版的win7系统文件,然后下载一个一键ghost重装工具,打开工具选择win7纯净系统文件,开始安装,系统会自动安装直到装完进入系统为止。相对来说还是比较傻瓜式简单便捷...
- windows95和windows10(windows95和windows10有什么区别)
-
初三男生100米跑10秒95,这是相当快的成绩了,是非常优秀的成绩。电记11秒74就是国家二级的成绩,那么这个成绩已经超过国家二级了,这样的学生可以通过体育生特招升级到高一级的高中学校去学习,在高中学...
- 电脑关机后启动不起来(电脑关机后无法正常启动)
-
散热不好。由于天气温度的影响或CPU风扇的转数不够所引起的系统过热,从而会导致电脑的自动关机。内存原因。当内存与主板插槽接触松动时也有可能引起电脑自动关机,建议检查内存是否和主板插紧,也可换个插槽看一...
- 纯净ghost系统下载(ghostwin7纯净版)
-
方法/步骤分步阅读1/4登陆账号首先进入AppStore,然后登陆美区id账号。2/4搜索点击顶部的搜索栏进入搜索页面。3/4查找结果在搜索结果中找到theghost,点击进入详情页面。4/4下载安...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
