【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、代言人等活跃于各种情境中。 去年以来,元宇宙和虚拟人技术进入全球科技产业的聚光灯…

Day46力扣打卡

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

IDEA maven无法下载源代码处理

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

Linux信号超详细剖析

预备知识: 一、信号产生(OS发给进程) 1、键盘组合键 Linux中,一次登录对应一个终端,bash/shell。且只允许一个进程是前台进程,默认就是bash/shell,其它都是后台进程。获取键盘输入的是前台进程。 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#基础与进阶扩展合集-进阶篇(持续更新)

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

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

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

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

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

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

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

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

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

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

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

使用 JDBC 连接 Neo4j(头歌)

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

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

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

知识图谱最简单的demo实现

一、简介 知识图谱整个建立过程可以分为以下几点: #mermaid-svg-zJuLB8k8EgBQF8M0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zJuLB8k8EgBQF8M0 .error-icon{fill:#552222;}#mermaid-svg-zJuLB8k8E…

【C++干货铺】继承 | 多继承 | 虚继承

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 继承的概念及定义 继承的概念 继承的定义 继承基类成员访问方式的变化 基类和派生类的赋值转化 继承中的作用域 派生类的默认成员函数 构造函数 拷贝构造…

基于Java SSM框架+Vue实现大学生兼职信息网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现大学生兼职信息网站演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认…

nodejs的安装和验证

1.浏览器访问nodejs官网,根据操作系统选择对应版本的安装文件,如下图所示: 2.双击下载的安装文件,点击“Next”,如下图所示: 3.勾选“I accept the terms in the License Agreement”,然后点击“…

MIAOYUN荣获“2023中国赛宝信息技术应用创新优秀解决方案应用创新示范方向三等奖”

11月30日,2023(第四届)数字化转型推动高质量发展大会在中国海口成功召开,会上举办了2023中国赛宝信息技术应用创新优秀解决方案征集活动颁奖仪式。成都元来云志科技有限公司(简称“MIAOYUN”)联合国网浙江省…

应用于智慧工厂的AI边缘计算盒子+AI算法软硬一体化方案

智慧工厂解决方案,传统工厂/生产管理,普遍存在运营粗放、效率低、应变能力差、安全隐患突出、资源不平衡等“行业症状”; 以英码产品为核心的智能化场景解决方案,可以从本质上根治这些“症状”,如企业可利用智能预测系…

10.30 作业 C++

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;clas…