继承(使用及深入、super、重写/复写)--学习JavaEE的day14

day14

一、继承

概念

Java中的继承是一个对象获取父对象的所有属性和行为的机制

理解:继承是指一个类(子类)可以继承另一个类(父类)的属性和方法

关键字extends

优点:减少代码的冗余

缺点:继承会增加类与类之间的关系,会增加代码的维护难度

继承的使用

使用场景:多个类似的类,有相同的属性和方法,就可以把相同属性和方法抽取到父类

需求:编写中国人和日本人的类,创建各自的对象

分析:

人类:

属性:姓名、性别、年龄

方法:吃饭饭、睡觉觉

中国人的类 继承 人类 :

属性:身份证

方法:打太极

日本人的类 继承 人类:

属性:年号

方法:拍电影

ps:(省略部分代码)

public class Person {String name;
char sex;
int age;public void eat(){System.out.println(this.name + "吃饭饭");
}public void sleep(){System.out.println(this.name + "睡觉觉");
}}
//            子类           继承        父类
public class Chinese extends Person{String id;public void playTaiJi(){System.out.println("中国人打太极");
}}
	//创建对象Chinese c = new Chinese();//操作父类属性c.name = "奇男子";c.sex = '男';c.age = 22;System.out.println(c.name);System.out.println(c.sex);System.out.println(c.age);//操作子类属性c.id = "1234567890";System.out.println(c.id);//调用父类方法c.eat();c.sleep();//调用子类方法c.playTaiJi();

继承内存图

继承内存图

super

理解:

super表示父类

作用:

1.super.属性:在子类中,调用父类的非私有化的成员属性

2.super.方法:在子类中,调用父类的非私有化的成员方法

3.super():在子类构造方法中的第一句调用父类的非私有化的构造方法

案例:

继承的使用的需求案例

封装父类,添加无参构造、有参构造、get、set方法(都由eclipse直接生成),成员方法保留

经验

私有化属性:eclipse工具栏 ------->Source------->Select getters and setters to create—>勾选需要生成属性的get和set方法;

Source中还有一些自动生成,如构造方法等等;

子类继承父类,封装子类,super使用

public class Chinese extends Person{private String id;public Chinese() {
}public Chinese(String name, char sex, int age, String id) {super(name, sex, age);this.id = id;
}public String getId() {return id;
}public void setId(String id) {this.id = id;
}public void playTaiJi(){System.out.println(super.getName() + "打太极");
}}

测试类,有有参构造直接赋值,不用一个个赋值

	//创建对象Chinese c = new Chinese("奇男子", '男', 22, "1234567890");//调用父类方法c.eat();c.sleep();//调用子类方法c.playTaiJi();
小结

编写一个类的步骤:

1.属性

2.私有化属性

3.无参构造

4.有参构造

5.get/set方法

6.其他的方法

深入继承:

思考题:
  1. 创建子类对象,会不会调用父类构造方法?

  2. 创建子类对象,会不会创建父类对象?
    不会

  3. 创建子类对象,为什么会调用父类构造方法?
    目的是将父类的属性存放在子类对象中(因为会在子类对象中开辟空间,用于存储父类的成员属性)

  4. 创建子类对象,先调用父类构造方法还是子类构造方法?
    先调用子类构造方法

  5. 创建子类对象,先完成父类构造方法还是子类构造方法?
    先完成父类构造方法

  6. 子类可以继承父类私有化的属性和方法吗?

    ​ 可以,但是只能间接调用

  7. 子类对象是否能继承父类所有的属性和方法?

    ​ Java官网上,明确表示子类不能继承父类私有化的属性和方法,这是站在使用的角度

    ​ 实际上,子类能继承父类私有化的属性方法,但是不能直接使用,可以在父类中编写公有方法去调用私有的属性和方法

案例:
public class Father {private String fatherAttr = "父类私有化属性";public Father() {System.out.println("调用父类的构造方法");
}public String getFatherAttr() {return fatherAttr;
}public void setFatherAttr(String fatherAttr) {this.fatherAttr = fatherAttr;
}private void method01(){System.out.println("父类私有化方法");
}public void method02(){method01();
}}
public class Son extends Father{public Son() {//super();//默认实现:调用父类的构造方法System.out.println("调用子类的构造方法");
}}
public class Test01 {public static void main(String[] args) {	Son son = new Son();System.out.println(son.getFatherAttr());son.method02();
}}

重写/复写

含义:

重写也叫做复写,将父类中方法在子类中重新编写一遍

应用场景:

父类方法不满足子类需求时,子类就可以重复父类的方法

条件:

1.在子类中重写父类的方法

2.返回值、方法名、参数列表必须跟父类重写的方法一致

3.访问修饰符不能比父类更严格

需求:

编写中国人和日本人的类,创建各自的对象

public class Chinese extends Person{
//省略一部分//@Override -- 重写的注解
//注解:给程序员和系统解释代码信息
@Override
public void eat(){System.out.println(super.getName() + "吃山珍海味");
}
//在测试类new对象调用输出

总结

1.继承的使用

2.继承的深入 — 重要

3.super

4.重写

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

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

相关文章

[Unity3d] 网络开发基础【个人复习笔记/有不足之处欢迎斧正/侵删】

TCP/IP TCP/IP协议是一 系列规则(协议)的统称,他们定义了消息在网络间进行传输的规则 是供已连接互联网的设备进行通信的通信规则 OSI模型只是一个基本概念,而TCP/IP协议是基于这个概念的具体实现 TCP和UDP协议 TCP:传输控制协议,面向连接&#xff0c…

VsCode配置PCL、Open3D自动补全

写在前面 本文内容 在VsCode上开发PCL、Open3D相关代码,代码自动补全 Open3D、PCL的安装使用见各个版本的Open3D、PCL的编译、使用教程 平台/环境 windows11(windows10): visual studio 2022;cmake 3.22; VsCode 通过cmake构建项目; 转载请…

Excel MATCH函数 两张顺序不同表格,统一排序

目录 一. 背景二. 添加辅助列,使用MATCH函数生成排序条件三. 效果 一. 背景 有如下图所示的两张表格,分别记录着同一批人的1月份和2月份的工资。表格A和表格B中的姓名列相同,工资列数据不同现在要求参考表格A中的姓名列对表格B中的数据进行排序&#xf…

C语言:预处理

C语言:预处理 预定义符号#define定义常量定义宏宏与函数对比 #操作符##操作符条件编译头文件包含库文件包含本地文件包含嵌套文件包含 预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。 __FILE__ //…

在你的 Vue + Electron 项目里,引入 ESLint

因为我的项目是基于 Electron 平台的 Web 应用,使用 Vue 3 实现,而且用了 TypeScript,所以,在引入 ESLint 的时候,要考虑好几种规范的问题。 文章目录 零、简介1. 规则2. 配置文件3. 共享配置4. 插件5. 解析器6. 自定义…

Vue开发实例(九)动态路由实现左侧菜单导航

之前在【Vue开发实例(六)实现左侧菜单导航】文中实现了菜单的导航,本篇是在那个基础上改造的。 动态路由实现左侧菜单导航 一、动态菜单创建二、根据菜单数据来创建路由三、添加路由已加载标记,省的每次点击菜单都要加载 一、动态…

【设计模式 01】单例模式

单例模式,是一种创建型设计模式,他的核心思想是保证一个类只有一个实例(即,在整个应用程序中,只存在该类的一个实例对象,而不是创建多个相同类型的对象),并提供一个全局访问点来访问…

java012 - Java集合基础

1、集合基础 1.1 集合概述 引用数据类型包括:类、接口、数组[] 1.2 ArrayList构造和添加方法 代码: 空集合对象:[] add() add(int index,E element): 1.3 ArrayList集合常用方法

Stable Diffusion 模型分享:Henmix_Real(人像、真实、写真、亚洲面孔)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八下载地址模型介绍 作者述:这个模型试图改

Springboot教程(五)——单元测试

idea中一般使用JUnit进行单元测试 基本使用 我们可以在idea的test文件夹下的XXXXApplicationTests内进行单元测试: 可以在Test标注的方法上写测试代码: SpringBootTest class C0101ApplicationTests {Testfun contextLoads() {println("Hello …

基础二分学习笔记

模板 : 个人倾向第一种 ; 整数二分 : 最大化查找 : 可行区域在左侧 : 查找最后一个<q的数的下标 : int find(int q){// 查找最后一个 < q 的下标 int l 0 , r n 1 ;while(l 1 < r){int mid l r >> 1 ;if(a[mid]<q) l mid ;else r mid ;}return…

土壤类型数据

国家地球系统科学数据中心

AGM CPLD (AGRV2K )的时钟(外部时钟和片上内部振荡器)

AGM CPLD &#xff08;AGRV2K &#xff09;的时钟(外部时钟和片上内部振荡器) 外部晶振 与 内部振荡器&#xff1a; mcu 和 cpld 联合编程时&#xff0c; 整颗芯片需要一颗外部晶振。 &#xff08;芯片有内部振荡器&#xff0c; 但误差较大&#xff0c; 校准后 5%以内误差&…

Electron通过预加载脚本从渲染器访问Node.js

问题&#xff1a;如何实现输出Electron的版本号和它的依赖项到你的web页面上&#xff1f; 答案&#xff1a;在主进程通过Node的全局 process 对象访问这个信息是微不足道的。 然而&#xff0c;你不能直接在主进程中编辑DOM&#xff0c;因为它无法访问渲染器 文档 上下文。 它们…

【软考】数据库的三级模式

目录 一、概念1.1 说明1.2 数据库系统体系结构图 二、外模式三、概念模式四、内模式 一、概念 1.1 说明 1.数据的存储结构各不相同&#xff0c;但体系结构基本上具有相同的特征&#xff0c;采用三级模式和两级镜像 2.数据库系统设计员可以在视图层、逻辑层和物理层对数据进行抽…

matplotlib散点图

matplotlib散点图 假设通过爬虫你获取到了北京2016年3, 10月份每天白天的最高气温(分别位于列表a, b), 那么此时如何寻找出气温和随时间(天)变化的某种规律? from matplotlib import pyplot as pltx_3 range(1, 32) x_10 range(51, 82)y_3 [11,17,16,11,12,11,12,6,6,7,8…

试手一下CameraX(APP)

书接上回。 首先还是看谷歌的官方文档&#xff1a; https://developer.android.com/media/camera/camerax?hlzh-cn https://developer.android.com/codelabs/camerax-getting-started?hlzh-cn#1 注&#xff1a;这里大部分内容也来自谷歌文档。 官方文档用的是Kotlin&…

Day14:信息打点-主机架构蜜罐识别WAF识别端口扫描协议识别服务安全

目录 Web服务器&应用服务器差异性 WAF防火墙&安全防护&识别技术 蜜罐平台&安全防护&识别技术 思维导图 章节知识点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系统/端口服务/网络环境/防火墙等 应用&#xff1a;APP对象/…

小程序图形:echarts-weixin 入门使用

去官网下载整个项目&#xff1a; https://github.com/ecomfe/echarts-for-weixin 拷贝ec-canvs文件夹到小程序里面 index.js里面的写法 import * as echarts from "../../components/ec-canvas/echarts" const app getApp(); function initChart(canvas, width, h…

Vscode 使用SSH远程连接树莓派的教程(解决卡在Downloading with wget)

配置Vscode Remote SSH 安装OpenSSH 打开Windows开始页面&#xff0c;直接进行搜索PowerShell&#xff0c;打开第一个Windows PowerShell&#xff0c;点击以管理员身份运行 输入指令 Get-WindowsCapability -Online | ? Name -like OpenSSH* 我是已经安装好了&#xff0c;…