Java学习-继承

大二上学期学习记录——java实验——类的继承实现与测试 设计一个动物(Animal类)设计子类(Dog与Cat实现继续Animal模式)。编写一个测试类验证继承方式与结果,特别注意继承父类构造方法的方式,使用Eclipse编写此功能,注意代码中的区别是什么? 阅读详情

Java 继承(inheritance)是 Java 面向对象的三大重要特性之一(封装-encapsulation, 继承-inheritance, 多态-polymorphsim) Java 继承很好的管理了具有相似特征的类之间的关系(主要集中在成员变量、方法), 使程序可扩展、易修改,并且成为java多态的基础。

  • Java中继承的特点:
    1.Java只支持单继承:一个父类被多个子类继承,但一个子类只能继承一个父类。与接口不同的是,一个类可以实现(implement)多个接口;
    2.Java支持多层继承:一个子类只能继承一个父类,但是这个父类还可以有其他父类;
    3.父类定义了继承树中共性的内容,子类定义了该类个性的内容;

  • 使用语法
    在Java之中,如果要实现继承的关系,可以使用如下的语法:

public class super{}
public class sub extends super{}
//sub:子类/派生类
//super:父类/超类/基类

1.在我们不重写(overwrite) 或重载(override)父类中的方法、不增添新的方法、不更改原始的成员变量或增加新的变量的情况下,子类会自动继承父类可继承的所有属性。
A:继承必须合理性
B:父类中成员是共性的内容
C:子类自动拥有父类的成员并且可以直接使用非私有的父类成员

2.继承中子父类的成员变量的特点:
a.子父类的成员变量不同名时,没有任何问题;
b.子父类的成员变量同名时,使用子类的对象访问该成员变量时,优先访问子类的;

3.继承中子父类的成员方法的特点:
a.子父类的成员方法不同名时,没有任何问题;
b.子父类的成员方法同名时,使用子类的对象访问该成员方法时,优先调用子类的;

4.无论是成员方法还是成员变量,优先访问或调用子类的,如果子类没有就访问或调用父类的,如果父类也没有则报错;

5.构造方法不能被继承;


  • This
    this相当于是指向当前对象本身;
    当局部变量和成员变量重名时,this.xxx进行区分;

  • Super
    super相当于是指向当前对象的父类;
    当父类的成员变量或方法和子类的重名时,可以用super.xxx来引用父类的成员区分父类和子类;

package com.jagger.secondtry;

public class super_demo {
	String name = "父类成员变量";
	
	public String TestSuperFu2(String name) {
		return name;
	}
}
package com.jagger.secondtry;

public class sub_demo extends super_demo{
	
	//this的直接引用
	public String TestThis(String name) {
		System.out.println("This引用前:" + name);//this引用前输出局部变量
		name = this.name;//this引用
		
		return name;
	}
	
	//super的直接引用
	public String TestSuperMe(String name) {
		System.out.println("Super引用前:" + name);
		name = super.name;//super引用父类成员变量
		return name;
	}
	
	public String TestSuperFu1(String name) {
		name = super.TestSuperFu2("父类方法");//super引用父类的成员方法
		return name;
	}
}
package com.jagger.secondtry;

public class Extend_demo {

	public static void main(String[] args) {
		sub_demo subb = new sub_demo();
		
		System.out.println("This引用后:" + subb.TestThis("子类局部变量"));;
		System.out.println("Super引用后:" + subb.TestSuperMe("子类局部变量"));
		System.out.println("Super引用后:" + subb.TestSuperFu("子类方法输入"));
	}
}
console输出结果:
This引用前:子类局部变量
This引用后:子类成员变量
Super引用前:子类局部变量
Super引用后:父类成员变量
Super引用后:父类方法

  • super():默认,无论调用子类的哪一个构造,都先会执行父类的无参构造(实例化子类,父类的构造方法一定会被调用);
  • super(参数):由其中的参数调用父类中的哪一个构造函数(应该为构造函数中的第一条语句);
  • this(参数):由其中的参数决定调用本类中的哪一个构造函数(应该为构造函数中的第一条语句);
package com.jagger.forthtry;

public class Parent {
	String name;
	int age;
	
	public Parent() {
		System.out.println("父类的无参构造");
	}
	
	public Parent(String name) {
		System.out.println("父类的name参数构造:" + name);
	}
	
	public Parent(String name,int age) {
		System.out.println("父类的name&age参数构造:" + name + age);
	}
}
package com.jagger.forthtry;

public class Child extends Parent {
	public Child( ) {
		super();//表示引用父类的无参构造
		System.out.println("子类的无参构造");
	}
	
	public Child(String name) {
		//super();//不使用任何super构造默认调用父类的无参构造
		//super(name);//引用相同参数类型的父类构造函数
		this();//调用子类的无参构造
		System.out.println("子类的age参数构造:" + name);
	}
	
	public Child(String name,int age) {
		super(name,age);
		//this(name);//调用子类中的相同参数类型的构造
		System.out.println("子类的age&name参数构造:" + name + age);
	}
}
package com.jagger.forthtry;

public class ThisSuper {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Child Tom = new Child();
		Child Saly = new Child("SS");
		Child Jack = new Child("JJ",20);
	}
}
console输出结果:
父类的无参构造
子类的无参构造
父类的无参构造
子类的无参构造
子类的age参数构造:SS
父类的name&age参数构造:JJ20
子类的age&name参数构造:JJ20

  • Overload方法的重载
    在同一个类中,方法名相同,但是参数类型和个数不一样,返回值类型可以相同可以不同,可以有不同的访问修饰符,可以抛出不同的异常,这时候这几个方法被称为方法的重载;
  • Override方法的重写
    若子类中的方法与父类中的某一方法具有相同的方法名,返回类型,参数列表,则新方法将覆盖原有的方法即方法的重写/覆盖;
package thirdtry;

public class Phone {
	int price;
	int color;
	int name;
	
	public void call() {
		System.out.println("拨打电话");
	}
	
	public void Msg(){
		System.out.println("发送短信");
	}
}

package thirdtry;

public class SmartPhone extends Phone{
	public void call() {
		super.call();//父类的功能必须存在
		System.out.println("面对面视频");
	}
	
	public void Msg(){
		super.Msg();//父类的功能必须存在
		System.out.println("发送图片");
		System.out.println("发送语音");
	}
}

package thirdtry;

public class override_demo {
	public static void main(String[] args) {
		SmartPhone Mi8 = new SmartPhone();
		
		Mi8.call();
		Mi8.Msg();
	}
}
console输出结果:
拨打电话
面对面视频
发送短信
发送图片
发送语音

重写的注意事项:
子类的方法重写/覆盖父类的方法,必须要保证子类权限大于等于父类权限
(Java的四种权限:public>protected>default>private);
如果父类的方法权限是private修饰的,在子类中无法重写;
重写方法时必须一模一样(方法名,返回类型,参数列表必须一样);


Java 学习之路 类的继承 文章目录类的继承直接继承间接继承 类的继承 继承是面向对象三大基本特征之一,是实现软件重复的重要手段,Java的继承是每个子类只有一个直接父类! Java的继承是通过 extends 关键字来实现的,直线继承的类是子类,被继承的是父类,有的被称为基类、超类。父类和子类的关系,我就用 上上篇 中的两只15吨重的猫来举例,黄上 和 红桃 它们的属性是猫,所以是,黄上 和 红桃 它们继承自猫,猫是父... 阅读详情

相关推荐

在VScode中配置Python开发环境(详细图片文字结合)

需要用到的软件下载包在官网里找一下,在window下的点击安装就行了;找一个3.8到3.10版本差不多都完善跟的上;

m0_72811193的博客 1599

Java 中继承(inherit)

1.Java中实现继承的关键字extends extends 本意为拓展、扩展、扩大;在java 中作为关键字,表示继承的意思。可以理解为在父类

qq_41511265的博客 1412

深信服防火墙路由模式开局部署-手把手教学(小白篇)

手把手教学,拿到深信服的防火墙路由模式该如何开局?

m0_64423407的博客 2万+

java里_Java 继承

java文件被编译成class文件时,在子类的所有构造函数中的第一行(第一个语句)会默认自动添加 super() 语句,在执行子类的构造函数前,总是会先执行父类中的构造函数。在编写代码要注意:1.如果父类中不含 默认构造函数(就是 类名() ),那么子类中的super()语句就会执行失败,系统就会报错。一般 默认构造函数 编译时会自动添加,但如果类中已经有一个构造函数时,就不会添加。2.执行父...

weixin_39593247的博客 161

AI 生成 CAN 通信测试用例实战

本文分享了AI辅助汽车电子测试用例编写的实战经验。通过某车企CAN网络测试项目案例,对比传统方式(需27天)与AI辅助方式(仅5天)的效率差异,展示81%的效率提升。文章详细介绍了从DBC文件提取信号信息的方法,包括DBC文件结构解析、信号定义说明,并提供了完整的Python解析脚本代码,可将信号信息导出为JSON或Excel格式,为后续AI批量生成测试用例奠定基础。

小明的博客 691

调试备忘录-SWD协议解析

目录--点击可快速直达 文章目录写在前面1  SWD协议简介2  SWD物理层协议解析2.1  SWD通信时序分析2.2  SWD 寄存器简介2.2.1  DP寄存器2.2.2  AP寄存器2.3  SWD通信流程2.3.1  SWD复位2.3.2  SWD读IDCODE2.3.3  SWD清除错误标志位,并且使能AP调试2.3.4  SWD读取AP IDR(也就是AP寄存器的ID CODE)2.3.5  SWD读写MCU任意寄存器 写在前面 最近由于公司需要,所以就做了个基于SWD协议的离线烧写器。由于.

洛神殇的博客 1万+

java 专业英语词汇

abstract (关键字)             抽象 ['.bstr.kt]  access                            vt.访问,存取 ['.kses]‘(n.入口,使用权)  algorithm                     n.算法 ['.lg.riem]  annotation                     [java]代码注释

helloworld的博客 1万+

如何读懂CiteSpace图谱?科研小白必看的节点颜色/年轮/聚类解读手册

本文详细解析CiteSpace图谱的核心视觉元素,包括节点颜色、年轮和聚类标识,帮助科研人员准确解读数据分析结果。通过生物医学案例展示如何从图谱中识别关键文献和研究趋势,提供五步系统解读法和常见错误规避策略,助力科研小白快速掌握文献计量分析技巧。

weixin_29179311的博客 314

Java继承_概念与实现(一)

继承就是子类继承父类行为,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。         概念不容易理解,举个大家都熟悉的魔兽游戏例子,加深一下理解继承。          通过上面的图,我们知道,游戏中有很多对象,会动的生物和不会动的建筑,会动的生物有英雄、自己造的兵。          我们知道所有的对象都有一个生命值,当生命值为零的时候,游戏对象就被删除了,那我们可以

widenstage的专栏 4313

群晖Hyper Backup还原实战:加密与非加密备份的完整操作指南

本文详细介绍了群晖Hyper Backup在加密与非加密备份场景下的完整还原操作指南。通过实战案例和高级技巧,帮助用户应对硬盘故障或系统崩溃时的数据恢复挑战,特别是加密备份恢复中的关键节点和常见陷阱。

weixin_29323365的博客 439

PCL 点云格式转换【2024最新版】

常见点云格式转化汇总包括txt、stl、csv、ply、obj、xyz、las等。博客长期更新,本文最近一次更新时间为:2024年9月14日,代码更新至PCL1.14.1版本。

点云侠的博客 39万+

Java学习——继承

super关键字是子类访问父类成员的重要工具,主要有三种用法:一是访问父类的构造方法,子类构造方法中默认会调用父类无参构造super(),也可以手动指定调用父类带参构造;继承关系中,子类可以继承父类的非私有属性和方法,但父类的private成员无法直接被子类访问,只能通过父类提供的public或protected方法间接调用。需要注意的是,Java仅支持单继承,一个类只能直接继承一个父类,但可以通过多层继承(如A→B→C)实现间接的多重继承效果,同时也可以通过实现多个接口弥补单继承的局限性。

sharemylove的博客 410

如何使用 Claude Code 搜索 SAP note

当然,Claude Code 自己仍然要有一种合法可用的模型访问方式,例如 Claude 订阅、Anthropic API 或公司配置的模型提供方式,这和 Browser Extension 是两个问题。因为 Claude Code 已经是完整的 MCP Host,而 Microsoft Playwright MCP 又已经明确支持现有 Chrome Session,两者拼起来在技术架构上完全成立。Microsoft Playwright MCP 默认可以创建持久化浏览器 Profile。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 62

java学习——继承

继承在Java中是一种重要的面向对象编程概念,它允许一个类(称为子类)获得另一个类(称为父类)的特征和行为。具体来说:子类继承父类的属性和行为:这意味着子类可以自动拥有与父类相同的属性和行为,无需重新编写代码即可直接使用这些属性和行为。访问权限控制:子类对父类非私有成员的访问通常受到限制,只能访问非私有的属性和行为。多层次继承:通过继承,可以实现不同级别的类之间的层级关系,从而构建复杂的系统结构。综上所述,继承使得子类对象具有与父类相同的属性和行为,提高了代码的可重用性和可维护性。

ping12138的博客 1044

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java学习Day06 封装 继承 多态

【代码】Java学习Day06 封装 继承 多态。

yuhuwangxy的博客 61

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

30天学习Java第五天——继承、多态

父类型引用指向子类型对象Java程序包括两个重要阶段:编译阶段上文代码在编译时,编译器只知道a1的类型是Animal,在编译时会去Animal类中找move()方法,如果找到了就进行静态绑定,编译通过;如果没找到,编译不通过。运行阶段上文代码在运行时,堆内存中的真实对象还是Cat类型,因此执行的时候还是Cat类中的move方法。这种绑定称为运行期绑定/动态绑定由于编译阶段是一种形态,运行阶段又是一种形态,故而谓之多态。

m0_55329111的博客 662

Java 继承学习

Java 继承 继承实现: 在Java中,如果实现继承的,需要使用Java关键字——extends : 被继承的类叫做超类,继承超类的类叫子类。(一个子类亦可以是另一个类的超类) class 子类 extends 父类 { …… } 子类也可以被成为“派生类”,父类也被称为基类(超类) 子类继承父类后,子类中...

weixin_30699443的博客 161

学习-Java继承和多态之子类继承性

第1关:学习-Java继承和多态之子类继承性 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性,并定义获取和设置性别属性的方法和 sleep 方法。 相关知识 继承是 Java 面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 图 1 如上

aiains的博客 9489

【Java学习】继承

所以子类在调用构造方法里中的再调用其它构造方法是无法实现的,因为this(参)如果有的话是必须也是在构造方法整个过程中的第一条执行语句,与它必有的super冲突,所以子类的构造方法整个过程的最后效果中,是无法再调用本类中其它的构造方法的,子类的构造方法们只能互独立选择调用子类创建似复刻变量时首传给的构造方法是在原子类中的,父类的构造方法在创似复刻变量首传时是不能传的。

Brookty的博客 1407

Java继承 学习

思维导图 导学 在本章节内容中,我们将继续来学习面向对象三大特性之一的继承。之前的封装,实际上是针对一个类进行隐藏和访问控制操作,而即将要学习的继承,其实是在描述两个类之间的关系。 ...

gegejiawei的博客 414

Java继承学习小结

继承 概述 继承是描述java中类与类之间的关系的 继承什么时候用 当描述的多个事物之间存在包含(is a)关系的时候,如果对象之间存在“B”是“A”,可以使用继承,“B”继承“A”.如: 猫 extends 哺乳动物 继承语法格式 使用extends关键字表示,前面是子类,后面是父类 public class Son extends Father{ // ... } 继承特点 java中的类与类之间只能单继承,不能多继承,可以多层继承 子类拥有父类非private的属性和方法,子类

yao_xi123的博客 237

Java学习之继承详解

Java三大特性之继承

Java学习博客 319

Java学习之继承

一、继承的实现1、继承的概念(1)概念继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法(2)格式继承通过extends实现格式:class 子类 extends 父类 { }举例:class Dog extends Animal { }(3)好处继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。(4)继承的好处和弊端弊端。

qq_53723728的博客 4454

java学习之JavaScript继承

js 中每个类都有三个部分: 构造函数内的,这是供实例化对象复制用的 构造函数外的,直接通过点语法添加的,这是供类使用的,实例化对象访问不到 类的原型上的,实例化对象可以通过其原型链间接访问到,供所有实例化对象共用 然而,继承中所涉及的不仅仅是一个对象,并且 js 也没有继承这一现有的机制,那它如何实现的呢? 原型 在 JavaScript 中,每个构造函数都拥有一个prototype属...

游戏建模零基础入门教程 1158

《Java面向对象编程》学习笔记6——继承和多态

本文已搬家至【Java学习笔记】继承和多态

gnuhpc的专栏 1262
上一篇: Java学习-标准描述类的写法
下一篇: Java学习-IO流(Stream)和文件(File)
Jagger_Lin
博客等级 码龄8年 17粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值