Java#18(面向对象三大特征之一:继承)

news2025/1/14 18:08:23

 

目录

一.继承

1.Java中提供了关键字extends,可以让一个类和另一个类建立起继承关系

2.继承的好处

3.什么时候使用继承?

 二.继承的特点

java只支持单继承,不支持多继承,但支持多层继承

 三.子类到底能继承父类中的哪些内容?

四.继承中成员变量和成员方法的访问特点

1. 继承中成员变量访问特点: 就近原则

2.如果出现了重名的成员变量怎么办?

3.构造方法的访问特点

五.方法重写注意事项和要求


一.继承

1.Java中提供了关键字extends,可以让一个类和另一个类建立起继承关系

格式: public class 子类名 extends 父类名  { }

子类也可以称为派生类 , 父类也可以称为基类超类

2.继承的好处

(1)可以把多个子类中重复的代码抽取到父类中,从而提高代码的复用性

(2)子类可以在父类的基础上,增加其他功能,使子类更加强大

3.什么时候使用继承?

当类与类之间,存在相同的内容时,并满足子类是父类中的一种,就可以考虑使用继承,阿里优化代码

子类是父类中的一种:例如:父类是Person,子类一个是Student,一个是Phone

                           这就不能使用继承,因为父类代表人,而Phone是手机,不是人的一种

 二.继承的特点

java只支持单继承,不支持多继承,但支持多层继承

1.单继承:一个子类只能继承一个父类

2.多继承:子类同时继承多个父类(在Java中是不允许的)

3.多层继承:子类继承于父类,而父类也可以有它的父类

例如:Student 继承于 Person,而Person 继承于 Animal,这就是多层继承

扩展:Animal就是Student的间接父类,而Person就是Student直接父类

        每一个类都直接或间接继承于Object

4.多层继承练习:

(题目来自黑马程序员)

现在有四种动物:布偶猫、中国狸花猫、哈士奇、泰迪暂时不考虑属性,只要考虑行为。请按照继承的思想特点进行继承体系的设计
四种动物分别有以下的行为:
布偶猫:吃饭、喝水、抓老鼠

中国狸花猫: 吃饭、喝水、抓老鼠

哈士奇: 吃饭、喝水、看家、拆家

泰迪:吃饭、喝水、看家、蹭一蹭

部分代码示范:

第一段是Animal类,第二段是狗类,第三段是哈士奇类,第四段是测试代码

package Demo;

public class Animal {
    public void eat(){
        System.out.println("吃饭");
    }
    public void drink(){
        System.out.println("喝水");
    }

}
package Demo;

public class Dog extends Animal{
    public void lookHome(){
        System.out.println("看家");
    }
}
package Demo;

//哈士奇类
public class Husky extends Dog{
    public void breakHome(){
        System.out.println("哈士奇在拆家");
    }

}
package Demo;

public class Test {
    public static void main(String[] args) {
        Ragdoll rd = new Ragdoll();
        rd.eat();//间接父类Animal中的,因为直接父类Cat有继承Animal,这就是多层继承
        rd.catchMouse();//直接父类Cat中
        rd.drink();//间接父类Animal中的,因为直接父类Cat有继承Animal,这就是多层继承

        Husky hs = new Husky();
        hs.lookHome();//直接父类Dog中的
        hs.drink();//间接父类Animal中的,因为直接父类Dog有继承Animal,这就是多层继承
        hs.eat();//间接父类Animal中的,因为直接父类Dog有继承Animal,这就是多层继承
        hs.breakHome();//哈士奇特有


    }
}

结果展示:

 三.子类到底能继承父类中的哪些内容?

构造方法: 非私有(public......)的不能,私有(private)的也不能

成员变量: 非私有的,私有的也

成员方法: 非私有的,私有的不能(父类中只有虚方法才能被子类继承)

虚方法: 非private,非static,非final

四.继承中成员变量和成员方法的访问特点

1. 继承中成员变量访问特点: 就近原则

先在局部位置找,本类成员位置找,父类成员位置找,逐级往上

2.如果出现了重名的成员变量怎么办?

System.out.printIn(name);//离它最近的name

System.out.println(this.name);//子类中的name

System.out.printIn(super .name) //父类中的name

3.构造方法的访问特点

(1)父类中的构造方法不会被子类继承
(2)子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。
为什么?
子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化子类将无法使用父类的数据,所以子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化。
如何调用父类构造方法?
子类构造方法的第一行语句默认都是: super(),不写也存在,且必须在第一行

如果想调用父类的有参构造方法就要,要自己使用super进行调用

五.方法重写注意事项和要求

1.重写方法的名称、形参列表必须与父类中的一致
2.子类重写父类方法时,访问权限子类必须大于等于父类 (暂时了解:空着不写< protected<       public)

3.子类重写父类方法时,返回值类型子类必须小于等于父类
4.建议:重写的方法尽量和父类保持一致

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

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

相关文章

Apache Jmeter压力测试与性能监控,监测cpu、内存、磁盘、网络

1.官网下载Jmeter 解压&#xff0c;bin目录下 Windows 运行jmeter.bat 、Linux运行jmeter.sh 2.jmeter-plugins-manager 插件 测试机下载放置Jmeter的apache-jmeter-5.5\lib\ext 目录下,重新jmeter。 3.ServerAgent-2.2.3.zip下载 下载好放服务器端&#xff0c;给可执行文…

FPGA精简版UDP协议实现板间网线传输视频,提供3套工程源码

目录1.FPGA精简版UDP介绍2.网线板间视频传输---精简版UDP再次精简3.网线板间视频传输---实现方案4.网线板间视频传输---发送端方案5.网线板间视频传输---接收端方案6.工程1介绍---Artix7(RTL8211)双网口环回7.工程2介绍---Artix7发送--->Kintex7(B50610)接收8.工程3介绍---K…

RabbitMQ的广播模式(fanout)在(基于xml配置)项目中使用

项目结构 添加相关的jar包&#xff1a; pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&qu…

@敏捷组织从业者,开放敏捷架构O-AA™标准考试及认证项目重磅上线!

数字化转型和敏捷转型需同时进行&#xff0c; O-AA™标准更强调组织和文化的转型。 认证项目 重磅发布 发布物资源 标准中文从业认证考试 标准讲师认证培训课程 ALL IN ∨ 开放敏捷架构O-AA™标准采用了基于结果、以产品为中心的方法&#xff0c;使企业能够以灵活和敏捷的…

[ros2实操]1-ros2的安装(ubuntu1804)与运行

参考链接: Recording and playing back data — ROS 2 Documentation: Galactic documentation 使用docker创建了一个ubuntu1804镜像: docker run -it --gpus all \-p 8860:8860 \-v /tmp/.X11-unix:/tmp/.X11-unix \-v /home/lbw/temp_dir:/temp_dir \-e DISPLAYunix$DISPL…

软件测试行业5年经验,薪资不如刚入行的应届生,真是日了狗了,问题究竟出在哪里?

最近公司新招了一位刚入行的应届生&#xff0c;作为组长我深刻体验到新人入行的痛楚&#xff0c;对此我十分照顾他&#xff0c;都是手把手教他公司业务流程。直到15号他工资到账15400元短信提示音响起&#xff0c;我才想起这是多么幼稚的行为&#xff0c;凭什么我在公司待了五年…

实验三 静态路由配置

计算机网络实验实验三 静态路由配置一、实验目的二、实验目的三、实验步骤3.1 连接实验拓扑结构3.2 配置路由器IP地址和掩码3.3 配置PC机IP地址、网关地址3.4 配置路由器的路由表四、思考题实验三 静态路由配置 一、实验目的 掌握手工配置路由表的方法 掌握读懂路由表的能力 …

Charles安装配置

目录 一、工作原理 二、主要功能 三、主要优点&#xff08;对比Fiddler&#xff09; 四、安装与配置 1、安装 2、组件介绍 1&#xff09;主导航栏 2&#xff09;请求栏 3&#xff09;请求数据栏 3、设置 1&#xff09;代理设置 2&#xff09;访问控制 4、客户端设置 …

(C语言)P1002 [NOIP2002 普及组] 过河卒

[NOIP2002 普及组] 过河卒 一、题目描述 棋盘上 AAA 点有一个过河卒&#xff0c;需要走到目标 BBB 点。卒行走的规则&#xff1a;可以向下、或者向右。同时在棋盘上 CCC 点有一个对方的马&#xff0c;该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦…

Redis实战——短信登录

目录 1 基于Seesion实现短信登录 1.1 发送短信验证码 1.2 登录功能 2 使用Redis进行短信验证码校验登录 2.1 Seesion方法存在的问题 2.2 发送短信验证码 2.3 验证码校验及登录功能 3.拦截器优化 1 基于Seesion实现短信登录 1.1 发送短信验证码 发送验证码请求路径 /u…

2、skywalking-安装(Docker-Compose方式)

1、服务器环境介绍 两台服务器均为Centos7.6 172.16.128.129 vm1 装载skywalking(采用es作为数据库) 172.16.128.130 vm2 项目服务器&#xff0c;然后向vm1集成 2、准备工作 2.1、由于安装skywalking是通过docker-compose方式安装在vm1且项目到时候是直接build成镜像然后发布&a…

行业安全解决方案 | 零售企业如何做好安全建设对抗黑灰产?

随着各行各业信息化、数字化、智能化进程不断加快&#xff0c;零售行业新业态也正在蓬勃发展。然而&#xff0c;随着转型深入推进及业务量的上升&#xff0c;随处可见的安全威胁逐渐成为零售企业的首要难题。 其主要原因在于该类企业一般涵盖大量用户个人数据&#xff0c;当企…

2022,软件测试行业岗位细分,薪资分布

软件测试是个需求多&#xff0c;就业机会大的职业。目前&#xff0c;我国具备软件测试能力的人员数量和市场需求相差巨大&#xff0c;巨大的市场空缺&#xff0c;使软件测试工程师从初级到高级&#xff0c;只需要 1 年甚至更短的时间来完成。所以作为一名软件测试工程师&#x…

图像基础知识、深度学习基础知识以及相关问题

疑难问题总结第一部分&#xff1a;图像基础边缘和轮廓1、图像中&#xff0c;什么是高频域和低频域&#xff1f;2、什么是图像轮廓&#xff0c;什么是图像边缘&#xff1f;第二部分&#xff1a;深度学习第一部分&#xff1a;图像基础 边缘和轮廓 1、图像中&#xff0c;什么是高…

从一座瑞典风机的倒塌看VDI2230用于螺栓连接精确计算的重要性

作者&#xff1a;螺栓设计老张 一、写在前面 引言&#xff1a;在机械行业&#xff0c;螺栓是与轴承、齿轮齐名的三大最主要机械元素&#xff0c;而从应用广泛程度来看&#xff0c;相比于轴承和齿轮是有过之而无不及。无论是机械传动还是机械结构&#xff0c;都离不开螺栓&…

[附源码]Python计算机毕业设计成绩管理与学情分析系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

WPS—JS宏笔记记录

前言&#xff1a;本方法需要一定的JS基础&#xff0c;这边不会赘述&#xff0c;0基础者可先自学JS 文章目录官方参考文档壹——excel表格篇一、创建新的表格输入内容并保存关闭ThisWorkbook&#xff1a;Application.Path:Workbooks:workbooks.Add:Sheets&#xff1a;自测&#…

OpenCV-Python小应用(五):基于模板匹配的图像拼接

OpenCV-Python小应用&#xff08;五&#xff09;&#xff1a;基于模板匹配的图像拼接前言前提条件实验环境基于模板匹配的图像拼接参考文献前言 本文是个人使用OpenCV-Python的应用案例&#xff0c;由于水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容…

【微服务】分布式组件 Nacos 结合 Feign 的使用

本文主要介绍如何搭建分布式开发基本环境 一、基本概念 1. 注册中心 在分布式系统中&#xff0c;每一个微服务上线&#xff0c;都需要注册到注册中心。&#xff08;方便服务的远程调用&#xff0c;比如订单想调用商品服务&#xff0c;直接从注册中心获得&#xff09; 对应 Sp…

SpringBoot整合mybatis

SpringBoot整合mybatis 以tb_book表格为例&#xff1a; 第一步&#xff1a;创建新模块&#xff0c;选择Spring初始化&#xff0c;并配置模块相关基础信息 第二步&#xff1a;选择当前模块需要使用的技术集&#xff08;MyBatis、MySQL&#xff09; 或者手工导入对应技术的star…