Java基础语法之继承

为什么要继承

会发现,狗和猫只有叫声不同,因为它们都是动物,会有相同的属性和行为,所以它们可以继承animla类

如何继承

用到extends关键字

这样就会简化好多

注意

1.Animal称为父类/超类/基类;dog,cat称为子类/派生类

2.继承父类后,必须要添加自己的成员,否则没必要继承

3.继承的作用:实现代码的复用

父类成员的访问

父类成员变量与子类不同名时

a=10;b=20;都是访问从父类继承下来的成员

c=30是访问子类自己的

父类与子类成员变量同名时

此时a=10是访问的自己的a

父类与子类成员方法同名时

总结

对父类成员的访问遵循就近原则,当父类子类的成员变量或方法同名时,就会访问子类的。

但如果成员名相同时,我就想访问父类的,该如何操作呢?

super关键字

作用:在子类中访问父类的成员

分割线上方都是Derived类内部的方法打印的,分割线下方是main方法打印的,这是因为引用a的类型是Derived,所以遵循就近原则,找到了子类中的a

注意

1.同this关键字一样,super只能在非静态方法中使用,所以在main方法中不能用到super和this

2.但是,静态的成员变量和方法也可以访问,只不过不推荐,静态的成员变量和方法一般通过类名来访问

子类构造方法

父子父子,先有父再有子,即:子类对象构造前,要先调用基类的构造方法。

我们自己没有给子类写构造方法时,编译器会默认添加上如下的构造方法

看似什么都没有,实际上这个方法的第一句是隐藏的super();这就是调用父类的构造方法,如下

当实例化son这个对象时,就会调用子类的构造方法,同时会在第一条语句执行隐藏的父类构造方法

构造方法的重载

注意看,下面的第四行代码报错了,这是为什么?

因为在父类中,我们重写了一个带参数的构造方法,所以编译器就不会默认提供不带参数的构造方法,同时,在子类的构造方法中隐藏的super()这样的调用语句就不起作用了

那如何解决?法一:在父类中写一个不带参数的构造方法。法二:在子类的构造方法中调用父类带参数的构造方法(注意,这个调用语句必须是在第一行)。如下俩种解决方案

用this在构造方法中调用其他构造方法

这个结果是什么呢?

注意,第一个被调用的子类构造方法的第一句会默认添加super(),而接下来调用的子类构造方法就不会再添加super(),因为构造方法对于一个对象只执行一次

再谈有初始化作用的代码块

没有继承关系时

静态代码块先执行,然后是实例代码块,最后是构造方法

静态代码块是在类加载时执行,不管有没有对象,不管有几个对象,只要这个类被提到了,他就执行且只执行一次

当有了对象的创建时,实例代码块才执行,最后是构造方法

有继承关系时

静态代码块优先执行,然后是父类的实例(构造方法不是静态的,也可以看作实例),最后是子类的实例

这是因为静态代码块在类加载时就执行,当编译器遇到Derived时,它会先找到父类先加载父类,然后加载子类,最后才开始创建对象,创建时还是遵循父类优先原则,先通过实例代码块和构造方法将父类中的值初始化以供子类使用,最后再对子类对象初始化。

父类中不同访问权限的成员在子类中的可见性

当父类和子类在同一个包中时

只有a是不可以被直接访问的,

当父类和子类在不同包中时

注意要用import导入父类所在的包

此时a和b都不可见,因为b是默认权限,只能在同一个包当中访问,c是可见的,因为protected修饰后,在同一个包中可以用,在不同包的子类中也可以用

final关键字

final关键字可以用来修饰变量,成员方法以及类

1.修饰变量,表示常量,不可以修改,不论是局部变量还是成员变量,都一样不可修改

2.修饰类,表示此类不能被继承

3.修饰方法,表示此方法不能被重写

继承与组合

继承是is-a的关系,比如狗是动物

组合是has-a的关系,比如汽车有什么

下面是一个学校类,里面有学生类,老师类,员工类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

249:vue+openlayers 经纬度坐标转化为地址信息,点击后在弹窗显示

第249个 点击查看专栏目录 本示例是演示如何在vue+openlayers项目中点击某点,转化经纬度坐标为地址信息,弹窗显示。 通过点击地图,获取到经纬度坐标,然后通过调取mapbox的地址转换API,将经纬度坐标转化为地址信息,通过overlay的方式,在弹窗中展示出来。 直接复制下面的…

sylar高性能服务器-配置(P12-p14)内容记录

文章目录 p12:复杂类型解析一、方法函数二、结果展示 p13:复杂类型解析完善一、方法函数二、结果展示 p14:自定义类型解析一、方法函数二、小结 p12:复杂类型解析 ​ 本节内容主要针对完了配置类中对于复杂类型的转换。之前只实现…

中伟视界:水位识别、智能化巡检、远程监控,提升智慧河道管理效率

随着现代科技的发展,人工智能(AI)算法在各行各业中的应用越来越广泛。特别是在水利行业中,智慧河道的运营管理已成为了一个重要的课题。本文将探讨如何利用AI算法优化智慧河道的运营效率,以及如何通过水位识别视频分析…

CentOS7 OpenSSL升级到OpenSSH9.5p1

原文链接: CentOS7 OpenSSL升级1.1.1w;OpenSSH 升级 9.5p1 保姆级教程 openssl从3.1.0升级到3.1.1遇到的问题 注意操作时需要联网请参考如下链接 内网服务器联网安装依赖参见我的另一篇文章 一、 前言 OpenSSH 的加密功能需要用到OpenSSL,所…

C语言指针基础题(二)

目录 例题一题目解析及答案 例题二题目解析及答案 例题三题目解析及答案 例题四题目解析及答案 例题五题目解析及答案 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸&#x1f…

Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构 上期中在导入一系列的商店资源包后,Assets 目录已经变的混乱不堪 开发过程中,随着资源不断更新,遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率 这里先做下简单的…

智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于斑点鬣狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.斑点鬣狗算法4.实验参数设定5.算法结果6.…

攻防世界-web-upload

1. 题目描述 打开链接,是这样的一个注册界面 先试着注册一个账号看看,这里简单操作,注册test/test,注册完后进行登录 登录成功后进入到这样一个文件上传界面。当前从界面上得到的信息暂时就是这些了。 2. 思路分析 既然存在上传…

【ret2hbp】一道板子测试题 和 SCTF2023 - sycrpg

前言 ret2hbp 主要是利用在内核版本 v6.2.0 之前,cpu_entry_area mapping 区域没有参与随机化的利用。其主要针对的场景如下: 1)存在任意地址读,泄漏内核地址 2)存在无数次任意地址写,泄漏内核地址并提权…

HCIA-WLAN V3.0,那些重点要点

一、WLAN各个标准,工作频段,理论速率。 二、OFDM和OFDMA,工作频段,空间流。 三、三种帧类型:管理帧、控制帧、数据帧,CAPWAP报文和端口。 四、帧间间隔,波束成形,信道绑定&#xff0…

接口测试要测试什么?怎么测?

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系 第二部分:主要介绍为什么要做接口测试,并简单总结接口持续集成和接口质量评估…

正确看待鸿蒙不兼容Android,这不是趋势?

华为可能明年推出不兼容安卓的鸿蒙版本。11月20日,据澎湃新闻报道,一华为相关人士表示,推出时间还不确定,未来IOS、鸿蒙、安卓将为三个各自独立的系统。 稍早前据证券时报报道,有业内人士亦表示:“华为内部…

Re59:读论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 模型开源地址:https://huggingface.co/facebook/rag-token-nq ArXiv下载地址:https://arxi…

Linux——MySQL数据库的使用

访问MySQL数据库 MySOL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySOL数据库 需要使用专门的客户端软件,在Linux系统中,最简单、易用的MySQL.客户端软件是其自带的mysql 命令工具。 登录到MySQL服…

关于Cython生成的so动态链接库逆向

来个引子:TPCTF的maze题目 如何生成这个so文件 为了研究逆向,我们先搞个例子感受一下生成so的整个过程,方便后续分析 创建对应python库文件 testso.py def test_add(a,b):a int(a)b int(b)return a bdef test_calc(li):for i in range…

逆向思考 C. Fence Painting

Problem - 1481C - Codeforces 思路:逆序考虑,因为每一块木板都是被最后一次粉刷所决定的。 从后往前开始,对于 c i c_i ci​来说, 如果这个颜色还有没有涂的木板,那么涂到其中一个木板即可如果这个颜色下没有未涂的…

系统思考与啤酒游戏经营沙盘

结束一家汽车零配件公司《系统思考与啤酒游戏经营沙盘》的内训课,4个小组基本上都有共同的心智模式,这也代表团队有一些集体的盲点。不仅仅对啤酒游戏经营沙盘做了复盘,同时也借用学员画出的系统环路图完成真实案例的研讨以及团队共识&#x…

从零开始学机器学习,这些学习网站让你事半功倍!

介绍:机器学习是人工智能(AI)和计算机科学的一个分支,它专注于使用数据和算法,模仿人类学习的方式,逐步提高自身的准确性。更具体来说,机器学习是一门关于数据学习的科学技术,它能帮…

功能更新|免费敏捷工具Leangoo领歌私有部署新增第三方身份认证和API对接

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo支持敏捷研发管理全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scr…

MySQL笔记-第11章_数据处理之增删改

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更…