【精选】java继承进阶——继承的特点 this、super

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

成员变量的访问特点

代码:

练习:

成员方法的访问特点

代码:

方法的重写 @Override

方法重写的本质

练习

画图

代码


成员变量的访问特点

  • 就近原则:谁离我近,我就用谁
  • 先在局部位置找,本类(this)成员位置找,父类成员(super)位置找,逐级往上
代码:
package demon3;public class Test {public static void main(String[] args) {Zi z = new Zi();z.ziShow();}
}class Ye {String name = "Ye";
}class Fu extends Ye{String name = "Fu";
}class Zi extends Fu{String name = "Zi";public void ziShow(){String name = "ziShow";System.out.println(name);//ziShowSystem.out.println(this.name);//ZiSystem.out.println(super.name);//Fu}
}
  1. System.out.println(name);将输出ziShow。这是因为在ziShow()方法的作用域中,存在一个局部变量name,它的值被赋为"ziShow",所以在当前作用域内,最近的定义的name变量即是这个局部变量。
  2. System.out.println(this.name);将输出Zi。这是因为this关键字表示当前对象(Zi类的实例对象),所以this.name表示当前对象的name属性的值,而Zi类中定义的name属性为"Zi"
  3. System.out.println(super.name);将输出Fu。这是因为super关键字表示父类对象(Zi类的父类Fu的实例对象),所以super.name表示父类对象的name属性的值,而Fu类中定义的name属性为"Fu"
练习:
  • //如何打印Zi
  • //如何打印Fu
  • //如何打印喝茶
  • //如何打印吃鸡
package demon3;
public class Test {public static void main(String[] args) {Zi z = new Zi();z.show();}
}class Fu {String name = "Fu";String hobby = "喝茶";}class Zi extends Fu {String name = "Zi";String game = "吃鸡";public void show() {//如何打印ZiSystem.out.println(name);System.out.println(this.name);//如何打印FuSystem.out.println(super.name);//如何打印喝茶System.out.println(hobby);System.out.println(this.hobby);System.out.println(super.hobby);//如何打印吃鸡System.out.println(game);System.out.println(this.game);}
}

成员方法的访问特点

  • 直接调用满足就近原则:谁离我近,我就用谁
  • super调用,直接访问父类
代码:
package demon3;
public class Test {public static void main(String[] args) {OverseasStudent s = new OverseasStudent();s.lunch();}
}class Person {public  void eat() {System.out.println("吃米饭,吃菜");}public void drink() {System.out.println("喝开水");}
}//留学生
class OverseasStudent extends Person{public void lunch(){this.eat();//吃意大利面this.drink();//喝凉水super.eat();//吃米饭,吃菜super.drink();//喝开水}//应用场景:当父类中方法,不能满足子类现在的需求时,我们就需要把这个方法进行重写。//注意:子类中重写的方法上面需要加上@override@Overridepublic  void eat() {System.out.println("吃意大利面");}@Overridepublic void drink() {System.out.println("喝凉水");}}class Student extends Person{public void lunch(){//先在本类中查看eat和drink方法,就会调用子类的,如果没有,就会调用从父类中继承下来的eat和drink方法this.eat();this.drink();//直接调用父类中的eat和drink方法super.eat();super.drink();}}

方法的重写 @Override

当父类的方法不能满足子类现在的需求时,需要进行方法重写。

书写格式 :

在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。

@Override重写注解

1.@Override是放在重写后的方法上,校验子类重写时语法是否正确。

2.加上注解后如果有红色波浪线,表示语法错误。

建议:重写的方法尽量和父类保持一致

方法重写的本质

练习

现在有三种动物:哈士奇、沙皮狗、中华田园犬

暂时不考虑属性,只要考虑行为。

请按照继承的思想特点进行继承体系的设计。

**三种动物分别有以下的行为: **

  • 哈士奇: 吃饭(吃狗粮)、喝水、看家、拆家

  • 沙皮狗: 吃饭(吃狗粮、吃骨头)、喝水、看家

  • 中华田园犬:吃饭(吃剩饭)、喝水、看家

画图

代码

总共要写5个代码

Dog(父类)

package demon3;public class Dog {public void eat(){System.out.println("狗在吃狗粮");}public void dirink(){System.out.println("狗在喝水");}public void lookhome(){System.out.println("狗在看家");}
}

Hsky

package demon3;public class Hsky extends Dog{//哈士奇多一个拆家public void breakhome(){System.out.println("哈士奇在拆家");}
}

shapi

package demon3;public class shapi extends Dog{//因为沙皮狗吃的是狗粮和骨头//父类中的方法不能满足我们的需求了,所以需要进行重写@Overridepublic void eat() {super.eat();//狗在吃狗粮System.out.println("狗在啃骨头");}
}

chinaDog

package demon3;public class chinaDog extends Dog{@Overridepublic void eat() {System.out.println("吃剩饭");}
}

测试类DogTest

package demon3;import demon.Hahky;public class DogTest {public static void main(String[] args) {//创建对象并调用Hahky h = new Hahky();h.eat();h.breakhome();h.drink();h.lookhome();System.out.println("-----------------------------------------");chinaDog c = new chinaDog();c.eat();c.lookhome();c.dirink();}
}

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

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

相关文章

5 款提升 UI 设计效率的软件工具

你知道如何选择正确的UI设计软件吗?你知道设计漂亮的用户界面和带来良好用户体验的应用程序需要什么界面设计软件吗?基于APP界面的不同功能,所选择的APP界面设计软件也会有所不同。然而,并不是说所有的APP界面设计软件都非常精通&…

Leetcode02.05:链表求和

一、题目描述 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) (5 -> 9 -…

【C语言】贪吃蛇 详解

该项目需要的技术要点 C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32API等。 由于篇幅限制 和 使知识模块化, 若想了解 使用到的 Win32API 的知识:请点击跳转:【Win32API】贪吃蛇会使用到的 Win32API 目录 1. 贪吃蛇游…

HTTP相关问题

目录 1.从输入URL到页面展示到底发生了什么? 2.HTTP状态码有哪些? 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些? 4.HTTP和HTTPS有什么区别&…

vue3-内置组件-Transition

基于状态变化的过渡和动画(常用) 建议多看几遍~~。然后动手去写写,学编程只有多动手才能有感觉。 内置组件: 它在任意别的组件中都可以被使用,无需注册。 Vue 提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动…

EMC测试介绍

EMC测试介绍 EMC包括电磁干扰(EMI) 和抗电磁干扰(EMS)两个部分。发射干扰传导发射测试极限线以峰值检坡器测量时使用的决策树应用EN55022标准的波形示例测试仪器![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4580f693ae9a4f84891ece29681c7bf2.png) 辐射发射测试…

react 之 react.memo

React.memo 作用:允许组件在props没有改变的情况下跳过重新渲染 组件默认的渲染机制 默认机制:顶层组件发生重新渲染,这个组件树的子级组件都会被重新渲染 // memo // 作用:允许组件在props没有改变的情况下跳过重新渲染import…

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址:https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的,则直接安装 npm install -g cnpm --regi…

JVM 性能调优 - 参数调优(3)

查看 JVM 内存的占用情况 编写代码 package com.test;public class PrintMemoryDemo {public static void main(String[] args) {// 堆内存总量long totalMemory Runtime.getRuntime().totalMemory();// jvm 试图使用的最大堆内存long maxMemory Runtime.getRuntime().maxM…

【Linux】Linux权限(下)

Hello everybody!在上一篇文章中,权限讲了大部分内容。今天继续介绍权限剩下的内容,希望大家看过这篇文章后都能有所收获! 1.更改文件的拥有者和所属组 对于普通用户,文件的拥有者和所属组都无权修改。 、 、 但root可以修改文件…

多账号运营为什么要使用动态住宅代理IP?

对于跨境有多账号运营需求的企业来说,选择正确类型的代理IP对于平稳运行至关重要。但最适合这项工作的代理类型是什么?为了更好地管理不同平台上的多个账户并优化成本,您可以选择动态住宅代理。 一、什么是动态住宅代理 动态住宅代理IP是互联…

创新方案|经济下行周期下企业避免杀价内卷侵蚀利润亟需5种创新定价策略

随着通胀持续、全球经济衰退逆风让消费者谨慎支出,绝大多数企业都担心如何刺激购买且保持利润率。在本研究认为,公司不应该简单地调整价格,而应该创造性地借鉴其他行业定价打法,通过创新定价选项的组合,增加向客户计价…

LLM之RAG实战(二十二)| LlamaIndex高级检索(一)构建完整基本RAG框架(包括RAG评估)

在RAG(retrieval Augmented Generation,检索增强生成)系统中,检索到文本的质量对大型语言模型生成响应的质量是非常重要的。检索到的与回答用户查询相关的文本质量越高,你的答案就越有根据和相关性,也更容易…

QMUI_Android:提升Android开发效率与质量的利器

QMUI_Android:提升Android开发效率与质量的利器 在Android应用开发过程中,开发者常常面临着重复编写基础组件和处理兼容性问题的挑战,这不仅耗费时间,也降低了开发效率。为了解决这一问题,Tencent推出了QMUI_Android框…

LeetCode、17. 电话号码的字母组合【中等,dfs回溯】

文章目录 前言LeetCode、17. 电话号码的字母组合【中等,dfs回溯】题目与类型思路递归回溯优化:StringBuilder来回溯补充代码:2024.1.31(简化) 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博…

docker部署docker运维工具

简介 主要功能:管理容器,管理镜像,管理容器网络 安装 拉取镜像 docker pull joinsunsoft/docker.ui:1.0.1 启动容器 docker run -d --name docker.ui --restart always -v /var/run/docker.sock:/var/run/docker.sock -p 10039:8999 joinsunsoft/docker.ui:1.0.1 使用 打…

基于鲸鱼优化的knn分类特征选择算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 鲸鱼优化算法(WOA) 4.1.1 包围猎物 4.1.2 螺旋式搜索 4.1.3 更新策略 4.2 K近邻(KNN)分类器 4.3 基于WOA的KNN分类特征选择算法 5.完…

将Juniper虚拟防火墙vSRX导入EVE-NG

正文共:555 字 8 图,预估阅读时间:1 分钟 前面我们已经简单介绍了如何导入vSRX的VMware镜像到Workstation(Juniper虚拟防火墙vSRX部署初体验),如何导入ESXi并简单操作WEB配置(将Juniper虚拟防火…

【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》

文章目录 1、问题提出2,网络协议是分层的3,应用层4,传输层5,网络层6,网络接口层7,总结 1、问题提出 为什么要有 TCP/IP 网络模型? 不同设备上的进程间通信需要通过一套通用的网络协议进行网络通…

第二证券:北向资金连续第五日净流入,茅台、工行、五粮液等获加仓

沪指低收险守2700点关口,北向资金接连5日净流入。 2月5日,A股三大股指团体低开,三大股指均创阶段性新低后反弹,创业板指午后首先翻红且一度涨超3%,深成指和沪指也相继转涨。但商场做多情绪欠安,沪深股指重…