Java中的继承

继承

  • 什么是继承
    • 继承的特点
    • 继承后对象的创建
  • 继承的好处与应用场景
  • 继承相关注意事项
    • 权限修饰符
    • 单继承、Object类
    • 方法重写
      • 什么是方法重写
    • 子类中访问其他成员的特点
    • 子类构造器的特点

什么是继承

Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。

//父类
public class A {//公开成员public int i;public void print1() {System.out.print("print1")}//私有成员private int j;private void print2() {System.out.println("print2")}
}
//子类
public class B extends A {// 子类可以继承父类的非私有成员public void print3() {System.out.println(i);print1();}
}

A类称为父类(基类或超类);
B类称为子类(派生类)

继承的特点

  • 子类能继承父类的非私有成员(成员变量、成员方法)

Java里的继承指的是能用的意思,子类继承父类非私有的成员意思是可以直接用父类非私有的成员。如:
A中的int iprint1()成员变量和方法都用public修饰(非私有),可以被子类B直接使用;
A中的int jprint2()成员变量和方法都用private修饰(私有的),不可以被子类B继承使用;

继承后对象的创建

  • 子类的对象是由子类、父类共同完成的。
    对象能访问什么变量是由子父类共同决定的在这里插入图片描述

继承的好处与应用场景

  • 减少重复代码的编写
    在这里插入图片描述
    如何优化?
    将这两个类的共同代码放到一个类里,让Teacher和Consultant都去继承。
    在这里插入图片描述

继承相关注意事项

权限修饰符

用来限制类中的成员(成员变量、成员方法、构造器、代码块…)能够被访问的范围。

  1. public
  2. private
  3. protected
  4. 缺省

在这里插入图片描述

单继承、Object类

Java是单继承,只能继承一个父类,不支持多继承,但可以多层继承。
Object类是Java中所有类的祖宗,任何一个类其实都是Object的子类或子孙类。

方法重写

什么是方法重写

当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法。

重写后,方法的访问,Java会遵循就近原则。
对象在调用方法时,就会调用B中的print函数,而不是A的
在这里插入图片描述
注意事项:

  • 重写小技巧:使用Override注解,他可以指定Java编译器,检查方法重写格式是否正确,代码可读性增强;
  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public>protected>缺省)
  • 重写的方法返回值类型,必须与被重写的方法的返回值类型一样,或者范围更小;
  • 私有方法、静态方法不能被重写,如果重写会报错的。

子类中访问其他成员的特点

1、在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。
在这里插入图片描述
2、如果一定需要访问父类的成员,使用super关键字调用

子类构造器的特点

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

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

相关文章

【自用】Ubuntu20.4从Vivado到ddr200t运行HelloWorld

【自用】Ubuntu20.4新系统从输入法到ddr200t运行HelloWorld 一、编辑bashrc二、Vivado2022.2安装三、编译蜂鸟E203自测样例1. 环境准备2. 下载e203_hbirdv2工程文件3. 尝试编译自测案例1. 安装RISC-V GNU工具链2. 编译测试样例 4. 用vivado为FPGA生成mcs文件1.准备RTL2.生成bit…

对大学生创新创业某赛事目前存在的烂尾楼现象的一些研究的分享(1)

经过对”某某网”大学生创新创业大赛国赛第五届-第八届部分金奖项目的研究,进行较为充分的信息溯源、穿透调查,我发现不少项目存在赛事材料画大饼,严重不切合实际,参赛人员并非真正创新创业,赛后迅速销声匿迹、烂尾切割…

图论 | 网络流的基本概念

文章目录 流网路残留网络增广路径割最大流最小割定理最大流Edmonds-Karp 算法算法步骤程序代码时间复杂度 流网路 流网络: G ( V , E ) G (V, E) G(V,E) 有向图,不考虑反向边s:源点t:汇点 c ( u , v ) c(u, v) c(u,v)&#xff…

你以为出现NoClassDefFoundError错误会是什么原因?

你以为出现NoClassDefFoundError错误会是什么原因? 1、概述2、事情经过3、总结 1、概述 大家好,我是欧阳方超,可以关注我的公众号“欧阳方超”,后续内容将在公众号首发。 同样的错误,非一样的解决方式。NoClassDefFou…

电商系统订单到期关闭如何实现(订单超时未支付自动取消)

在电商,支付等系统中,一设都是先创建订单(支付单),再给用户一定的时间进行支付,如果没有按时支付的 话,就需要把之前的订单(支付单)取消掉。这种类以的场景有很多,还有比…

【智慧校园】基于国标GB28181协议EasyCVR视频技术的高校宿舍智能监管方案

现如今,各大学校不乏众多住校生,但由于很多学生年龄较小 ,又缺乏独自生活的经历,如何给在校住宿生做到安全与生活双重保障?旭帆科技校园智能视频监控通过人工智能技术对住宿区域进行智能监管,确保学生住宿安…

【HCIP学习记录】OSPF Hello报文及状态机

字段长度含义Version1字节版本,OSPF的版本号。对于OSPFv2来说,其值为2。Type1字节类型,OSPF报文的类型,有下面几种类型: 1:Hello报文;● 2:DD报文;● 3:LSR报…

MySQL_15.UNDO和REDO的区别

redo 重做日志(redo)包含所有数据产生的历史改变记录,是oracle在线或归档重做日志文件中记录的信息, 一旦掉电或其他意外丢失数据,可以利用这些数据来重做事务,例如已经出现了丢失数据的情况, 那…

肺癌相关知识

写在前面 大概想了解下肺癌相关的知识,开此贴做记录,看看后续有没有相关的生信文章思路。 综述 文章名期刊影响因子Lung cancer immunotherapy: progress, pitfalls, and promisesMol Cancer37.3 常见治疗手段有surgery, radiation therapy, chemoth…

【终极教程】cocos2dx-js 分批次混淆压缩js文件

​ 说明: 1> 由于我们当前游戏框架的结构是平台形式的就是一个大厅里面有若干个子游戏,所以在发布的时候得区分子游戏和大厅了解了一下 project.json 里面有一个 jsList 可以把所有放进去的js文件压缩混淆成一个大的文件但是我们游戏的子游戏非常多 这样子弄显然不合适&…

青少年CTF-qsnctf-Web-登陆试试

题目环境: 题目难度:★题目描述:Syclover用户忘了他的密码,咋办哦,依稀记得密码为6位数字,以774开头,这次我们来爆爆他的密码,让他再也不犯相同的错了 先不着急进行爆破 看看源码里面有没有其它有用的信息 …

Shell三剑客:awk(内部变量)

一、$0 :完整的输入记录 [rootlocalhost ~]# awk -F: {print $0} passwd.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/s…

软件分享--图片置顶工具

一个好的程序应该只做一件事情,并且将这件事情做好。 使用许多小工具的集合要比使用一个什么都做但什么都做不好的工具要好。 linux系统强大,组成它的是dd、sed、grep、awk、tar等各种命令工具的集合。 如果你能够合理使用各种小工具。效率会比使用任何…

【python】作用域与闭包 || global与nonlocal

python作用域 其他语言的作用域:块级、函数、类、模块、包等由小到大的级别但是python没有块级(if语句块、for语句块),所以if中定义的变量,相当于普通语句 >>> if True: # if语句块没有作用域x …

OPPO R11刷机过程记录

一、步骤: 1、下载对应的OPPO R11的USB驱动: oppo r11驱动|oppo r11手机驱动下载v2.0.0.1官方版 - 欧普软件园 2、数据线连接电脑与手机 21)长按音量上下电源3个按键10秒,进入9008模式 22) 打开奇兔刷机-实用工具…

Vue3-23-组件-依赖注入的使用详解

什么是依赖注入 个人的理解 : 依赖注入,是在 一颗 组件树中,由 【前代组件】 给 【后代组件】 提供 属性值的 一种方式 ;这种方式 突破了 【父子组件】之间通过 props 的方式传值的限制,只要是 【前代组件】提供的 依…

[MySQL]用基本的mysql语句写的{商店的数据}和{学生成绩}

文章目录 前言一、题目二、创建2.写入table 三.查看表单结构四.插入数据1.俩种方法2.指定插入 五.查询1.全部和指定查询2.别名查询3.去重4.排序5.条件查询(where) 六.修改七.删除八.在table中插入一列总结: 前言 提示:以下是本篇文章正文内容…

实现单链表的基本操作(力扣、牛客刷题的基础笔试题常客)

本节来学习单链表的实现。在链表的刷题中,单链表占主导地位,很多oj题都在在单链表的背景下进行;而且很多链表的面试题都是以单链表为背景命题。所以,学好单链表的基本操作很重要 目录 一.介绍单链表 1.链表及单链表 2.定义一个…

JVM垃圾收集器三色标记算法

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比…

day44代码训练|动态规划part06

完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 1. dp数组的含义 dp[i][j] 0-i物品,重量为j的容量时,最大的价值 2. 递推公式 dp[i][j] max(dp[i-1][j],dp[i][j-weight[i]]value[i]); 两种状态,不用物品i的话&…