【JAVA面向对象编程】--- 探索子类如何继承父类

🌈个人主页: Aileen_0v0
🔥学习专栏:  Java学习系列专栏

💫个人格言:"没有罗马,那就自己创造罗马~"

目录

继承 

继承的普通成员方法调用 及 普通成员变量修改

构造方法的调用

子类构造方法 


继承 

package Inherit;class Animal {public String name;public int age;public void eat() {System.out.println(name+" 正在吃饭!");}
}class Dog extends Animal{public int count;public void wangwang() {System.out.println(name+"正在叫!");}}class Cat extends Animal{public void miaomiao() {System.out.println(name+ "正在苗苗叫!");}}public class Test3 {public static void main(String[] args) {Dog dog = new Dog();dog.name = "坦克";dog.eat();dog.wangwang();Cat cat = new Cat();cat.name = "小咪";cat.eat();cat.miaomiao();}}

继承的普通成员方法调用 及 普通成员变量修改


构造方法的调用

package Inherit;class Ani {public String name;public int age;public void eat(){System.out.println(name + "吃饭!");}	
}class HotDog extends Ani{//傻狗 是狗的属性public String silly; public String name = "hello";public void houseGuard() {System.out.println(super.name+"正在看家护院!");}
}
//1.this 会优先访问子类自己的,若子类无 ,才会访问父类的.
//2.super 只是一个关键字,在代码层面上,能够达到易读效果,可以用来访问父类的内容及地址但是不能说成`是`引用class Miao extends Ani{public void catchMouse(String name) {System.out.println(name + "抓杰瑞!");}@Overridepublic String toString() {return "miao 抓老鼠";}public Miao() {System.out.println(name + "抓老鼠!");}public Miao(String name) {this.name = name;System.out.println(name + "抓老鼠!");}
}public class Test2{public static void main(String[] args) {Miao miao = new Miao();Miao miao1 = new Miao("喵喵");new Miao("Tom"). catchMouse("🐱");HotDog hotdog = new HotDog();System.out.println(hotdog);}
}

子类构造方法 

 面试题:

1.this 会优先访问子类自己的,若子类无 ,才会访问父类的.

2.super 只是一个关键字,在代码层面上,能够达到易读效果,可以用来访问父类的内容及地址但是不能说成是引用

this 访问的范围大于 super

package Inherit;class Animal {public String name;public int age;//	    public Animal() {
//	    	
//	    }//父类调用含参的构造方法--->//报错信息:Implicit super constructor Animal()//is undefined for default constructor. //Must define an explicit constructorpublic Animal(String name , int age) {this.name = name;this.age = age;System.out.println("Animal(String,int)");}public void eat() {System.out.println(name+" 正在吃饭!");}public static void staticFunc() {}
}class Dog extends Animal{public int count;public void wangwang() {System.out.println(this.name+"正在叫!");//super.eat();--->利用super调用父类方法staticFunc();}public Dog(String name , int age,int count) {//1.先帮助父类部分初始化  必须放到第一行super(name,age);//2.再初始化自己this.count = count; System.out.println("Dog(String,int,int)");}}class Cat extends Animal{public Cat() {super("mmi", 10);}public Cat(String name,int age) {super(name,age);}public void miaomiao() {System.out.println(name+ "正在苗苗叫!");}}public class Test3 {public static void main(String[] args) {Dog dog = new Dog("hello",10,3);dog.wangwang();}

在子类变量中访问父类的变量和方法

注意事项:

1.当调用含参的构造方法时系统就不会自动调用无参构造方法

2.对象属性的初始化一定得调用构造方法的

3.子类构造方法:当我们构造Dog时要先调用它的构造方法--->

    (1).先帮助父类初始化(通过super(属性)),(2).再通过this.属性 = ...初始化属性。

4.如果子类想要调用父类的静态构造方法,可以在子类中通过方法名()进行访问

静态里面,不能用this 也不能用super

注意:子类构造方法中会默认调用无参构造方法: super(),

           用户没有写时,编译器会自动添加,而且super()必须是子类构造方法的第一句,               并且只能出现一次。

5.

【不带参数默认叫咪咪,带参数需要自己传】      父类初始化虽然执行了父类的构造方法,但没有生成父类对象,这里只是帮助子类初始化从父类继承过来的属性。

 

总结:

子类构造方法中,并没有写任何关于基类构造的代码,但是在构造子类对象(穿件对象)时,先执行基类(父类)的构造方法,后执行子类的构造方法

因为:

**子类对象中成员是有两部分组成的,基类继承下来的以及子类新增加的部分。父子父子肯定是先有父再有子,所以在构造子类对象时候 ,先要调用基类的构造方法,将从基类继承下来的成员构造完整,然后再调用子类自己的构造方法,将子类自己新增加的成员初始化完整**。
注意:
1,若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super(调用,即调用基类构造方法
2.如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。
3.在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句。4.super(...)只能在子类构造方法中出现一次,并且不能和this同时出现 

 

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

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

相关文章

如何制作一个数字人?流程是怎样的?

​​虚拟人概念从早期动漫领域的初音未来用一首《甩葱歌》让绿色双马尾的“歌姬”形象火出圈,到洛天依登上央视春晚舞台,再到众多虚拟歌手、虚拟主播、KOL、代言人等活跃于各种情境中。 去年以来,元宇宙和虚拟人技术进入全球科技产业的聚光灯…

笔记二十二、使用路由state进行传递参数

22.1 父组件设置state路由参数 <NavLink toclassify state{{param_C: this.state.name, param_D: this.state.age}} className{this.activeStyle}>classify</NavLink> 父组件 Home/index.jsx import React from "react"; import {NavLink, Outlet} from…

Day46力扣打卡

最近一直在做以前的题&#xff0c;刷题量都没有怎么增长&#xff0c;感觉自己算法一直不太行&#xff0c;但也只能菜就多练了。 打卡记录 由子序列构造的最长回文串的长度&#xff08;区间DP&#xff09; 链接 第二次刷这道题&#xff0c;相比上回思路来的很快&#xff0c;但…

IDEA maven无法下载源代码处理

1、使用idea内置maven 在idea中新增一个mvn运行项,截图如下: 输入命令: dependency:resolve -Dclassifiersources 2、如果外部maven&#xff0c;不使用idea内部maven 在工程目录下命令行执行命令: mvn dependency:resolve -Dclassifiersources

Golang实践录:读取xml配置文件

本文对 xml 文件进行解析。 概述 某项目涉及到数据传输&#xff0c;我负责运行在工控机的客户端。实际上&#xff0c;工控机已经有了作为“数据传输”角色的程序&#xff0c;已经 worked 了很多年&#xff0c;从工程较多处出现的func_<年份>来看&#xff0c;年龄不小于已…

Linux信号超详细剖析

预备知识&#xff1a; 一、信号产生(OS发给进程) 1、键盘组合键 Linux中&#xff0c;一次登录对应一个终端&#xff0c;bash/shell。且只允许一个进程是前台进程&#xff0c;默认就是bash/shell&#xff0c;其它都是后台进程。获取键盘输入的是前台进程。 Ctrlc: 向前台进程…

面试题:什么是负载均衡?常见的负载均衡策略有哪些?

文章目录 一、负载均衡二、负载均衡模型分类三、CDN负载均衡四、LVS负载均衡4.1 LVS 支持的三种模式4.1.1 DR 模式4.1.2 TUN 模式4.1.3 NAT 模式 4.2 LVS 基于 Netfilter 的框架实现 五、负载均衡策略是什么六、常用负载均衡策略图解6.1 轮询6.2 加权轮询6.3 最少连接数6.4 最快…

C#基础与进阶扩展合集-进阶篇(持续更新)

目录 本文分两篇&#xff0c;基础篇点击&#xff1a;C#基础与进阶扩展合集-基础篇 二、进阶扩展 1、Predicate 2、设置C#语言版本 3、ListCollectionView过滤集合 4、Adapt适配器 5、值类型与引用类型 6、程序设置当前项目工作目录 7、获取App.config配置文件中的值 …

【计算机网络笔记】虚拟局域网(VLAN)

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

Qt5.15.2的镜像网址

其它版本的qt把相应数字更换即可 已安装的QT怎么更新安装组件。离线版QT安装&#xff1a;已安装的QT怎么更新安装组件。离线版QT安装_哔哩哔哩_bilibili https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5152_wasm/https://mirrors.…

使用 CSS Grid 的响应式网页设计:消除媒体查询过载

文章目录 前言介绍 CSS Grid让我们开始吧实现高级响应性1、Repeat() 2、Auto-fit3、Minmax()结论 前言 你是否厌倦了在实现响应式网站时需要管理多个媒体查询&#xff1f;说再见复杂的代码&#xff0c;拥抱更简单的解决方案吧&#xff1a;CSS Grid。 在这篇文章中&#xff0c;…

WT2605-24SS录放音语音芯片:便捷按键功能提升用户体验

随着科技的飞速发展&#xff0c;语音芯片已经成为了日常生活中不可或缺的一部分。在众多语音芯片中&#xff0c;WT2605-24SS录放音语音芯片凭借其出色的性能和人性化的按键设计&#xff0c;备受用户青睐。本文将重点介绍唯创知音WT2605-24SS的按键功能&#xff0c;包括REC脚和P…

AC-DC 220V转12V 500毫安非隔离恒压恒流降压芯片

AC-DC 220V转12V 500毫安非隔离恒压恒流降压芯片是一款高性能的电源管理芯片&#xff0c;它能够将220V的交流电压降低到12V直流电压&#xff0c;并且具有恒压恒流输出、多模式控制、低待机功耗、高精度输出、内置软启动、多种保护功能等特点。 该芯片的非隔离系统恒压恒流输出可…

Oracle行转列,列转行使用实例

-----1.行转换为列 select a.fworkcenter as 车间,F1||-数量 as 类型, fspec as 规格 ,ftype as 前缀 , to_char(fdate,YYYY-MM-dd) as 日期, (case when a.fcode in (900,901) then to_char(fcount,fm90.990) else cast(fcount as varchar(20)) end) 值 , …

每日清晨 不可辜负 :今天的样子是昨天造成的,明天的样子是今天造成的,每日清晨一小时

程序员宝藏书籍 以下推荐的书籍&#xff0c;可从下面网盘中随意取用 下述书籍 1.1 崇拜的大佬推荐的书籍 1.2 都经本人浏览过目录&#xff0c;都有大量实操代码&#xff0c;无代码书籍全Pass除非业界公认经典晚上用家里宽带把书籍上传网盘了&#xff0c;再分享出来链接&#x…

企业存货库存综合分析全流程图

上期我们谈到了 诊断存货管理的4大维度&#xff0c;今天我们进一步全方位、全周期的分析企业内存货的问题。 企业存货是企业用于生产或销售的货品&#xff0c;是企业价值增值变现的载体&#xff0c;但是如果一旦没有产生交易&#xff0c;存货就很有可能带来损失。存货伴随着企业…

PS是什么?PS的在线使用教程

Photoshop简介 AdobePhotoshop&#xff0c;简称“PS“Photoshop主要处理由像素组成的数字图像。Photoshop拥有强大的图像处理工具和绘图工具&#xff0c;可以有效地编辑图片。在最新版本的Photoshop中&#xff0c;甚至可以完成3D和视频的后期工作。 Photoshop是目前最强大的图…

使用 JDBC 连接 Neo4j(头歌)

文章目录 第1关&#xff1a;连接 Neo4j &#xff08;JDBC&#xff09;任务描述相关知识完成 JDBC 环境设置连接 Neo4j 对数据进行查询 编程要求测试说明答案测试前准备代码文件 第1关&#xff1a;连接 Neo4j &#xff08;JDBC&#xff09; 任务描述 本关任务&#xff1a;使用…

XXL-Job详解(四):任务注册原理

目录 前言任务注册注册方法 前言 看该文章之前&#xff0c;最好看一下之前的文章&#xff0c;比较方便我们理解 XXL-Job详解&#xff08;一&#xff09;&#xff1a;组件架构 XXL-Job详解&#xff08;二&#xff09;&#xff1a;安装部署 XXL-Job详解&#xff08;三&#xff0…

万界星空科技MES生产管理系统的主要功能

万界星空科技MES/云MES生产管理系统主要包括以下功能模块&#xff1a; 生产计划管理&#xff1a;根据订单和生产计划&#xff0c;制定详细的调度表和车间生产经营计划&#xff0c;将生产计划和客户订单转化为具体的生产经营计划&#xff0c;消除有效的日常运营&#xff0c;大大…