Java类的继承

news2024/9/21 16:33:18

继承:

        类的继承基本思想是基于某个父类进行扩展,得到一个新的子类,子类可以继承父类的原有属性和方法,也可以增加原来父类所不具备的属性和方法,或者重写父类中的方法;

重写:

        【重写】也可以称为【覆盖】,就是在子类中奖父类的成员方法名保留,重写成员方法的实现内容或更改方法的权限或修改方法的返回值类型,重写父类方法时,修改方法的修饰权限只能从小的范围修改为大的范围改变。

重构:

        【重构】是一种特殊的重写方式,与父类的成员方法唯一不同点是方法的【实现内容】部分,其余的返回值、方法名称、参数类型及个数完全相同。

        子类中没有权限调用父类中【private】权限修饰符修饰的方法,只能调用父类中修饰为【public】和【protected】的成员方法。

1.extends继承父类:        

        Java中通过【extends】关键字来标识两个类的继承关系。 

2.super调用父类:

        通过【super】关键字来调用父类的构造方法和成员方法。

        2.1 super():调用父类构造方法

        2.2 super.父类方法名():调用父类成员方法

package classExtends;

public class Test {
    public Test() {  //构造方法
        //SomeSentence
    }

    protected void doSomething() {   //成员方法
        //SomeSentence
    }

    protected Test doIt() {  //方法返回值类型为Test类型
        return new Test();
    }
}

class Test2 extends Test {   //继承父类Test
    public Test2() {
        super.doSomething();    //调用父类方法
    }

    public void doSomthing2() {  //新增方法
        //SomeSentence
    }

    public void doSomething() {  //重写父类方法
        //SomeNewSentence
    }

    public Test2 doIt() {    //重写父类方法,返回Test2类型
        return new Test2();
    }

}

        当实例化子类对象时,父类对象也会相应被实例化,原因是在实例化子类对象时,Java编译器会在子类的构造方法中自动调用父类的无参构造方法,有参构造方法不能被自动调用,只能通过super关键字显示地调用。

package classExtends;

class Parent {
    public Parent() {
        System.out.println("调用了父类的Parent的构造方法~");
    }
}

class subParent extends Parent {     //继承Parent类
    public subParent() {
        System.out.println("调用了父类的subParent的构造方法~");
    }
}

public class subRoutine extends subParent {      //继承subParent类
    public subRoutine() {
        System.out.println("调用了父类的subRoutine的构造方法~");
    }

    public static void main(String[] args) {
        subRoutine sr = new subRoutine();    //实例化子类对象
    }
}

输出:
        调用了父类的Parent的构造方法~
        调用了父类的subParent的构造方法~
        调用了父类的subRoutine的构造方法~

        如果使用finalize()方法对对象进行清理,要确保子类finalize()方法最后一个动作是调用父类finalize()方法,以保证对象的所有部分都能被正常终止。

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

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

相关文章

阿里云服务结构--长期更新

CNCF 全称Cloud Native Computing Foundation(云原生计算基金会),成立于 2015 年7月21日(于美国波特兰OSCON 2015上宣布),其最初的口号是坚持和整合开源技术来让编排容器作为微服务架构的一部分&#xff0…

基于​Segment-and-Track Anything与ProPainter实现视频一键目标移除与一键祛除水印

一、 ProPainter 1.算法简介 ProPainter是由新加坡南洋理工大学(Nanyang Technological University)的S-Lab团队开发的一款视频修复工具。它融合了图像和特征修复的优势,以及高效的Transformer技术,旨在提供高质量的视频修复效果…

SolidWorks模型导入到Gazebo中

首先建立好solidworks模型,然后另存为stl格式, 导出为STL文件时,文件名最好不要是中文,并且要将后缀STL改为stl,否则Gazebo无法识别 这是我创建好的机器人充电桩模型: 尺寸是单位是mm: 135mm …

C语言程序的翻译环境和执行环境

目录 一、概述:翻译环境、执行环境 1.翻译环境 2.执行环境(运行环境) 二、详述翻译环境——编译环境、链接环境 1.编译环境 2.链接环境 三、详述编译过程——预编译、编译、汇编 1.预编译(预处理) 2.编译&…

JVM 堆外内存查看方法

JVM 堆外内存查看方法 概述 是否曾经想过为什么Java应用程序通过众所周知的*-Xms和-Xmx调整标志消耗的内存比指定的数量大得多 ?由于各种原因和可能的优化,JVM可能会分配额外的本机内存。这些额外的分配最终可能使消耗的内存超出-Xmx* 限制。在本教程中…

第6周 .NET

好嘛!本来以为上周SQL Server环境配置等已经够恶心了,没想到这周又得去搞所谓的Microsoft Visual Studio 2005了。 首先非常离谱的是,这个Microsoft Visual Studio 2005如果就是指Visual Studio 2005,那么已经是8年前的老的不行的…

【技能树笔记】网络篇——练习题解析(八)

目录 前言 一、LAN技术 1.1 堆叠与集群 1.2 MSTP的特点 二、WAN技术 2.1 PPP链路建立 2.2 PPPoE 2.3 组播 2.3.1 组播的IP 2.3.2 组播分发树 2.3.3 组播协议 三、IPv6基础 3.1 IPv6地址 3.2 IPv6协议 3.3 IPv6过渡技术 总结 🌈嗨!我是Filotimo__&#x1…

快速拿下 AI Prompt 工程师证书攻略!

Datawhale干货 贡献者:许文豪、司玉鑫、甘元琦 Prompt 是 AI 2.0 时代打开大模型能力的金钥匙,它能够大大的提高工作效率。 如果把大语言模型 (LLM,Large Language Model) 具象成一个的员工,那 Prompt 提示词则好比是你给员工下的…

留意差距:弥合网络安全基础设施的挑战

您最近一直在关注日益增加的网络威胁吗?如果您发现自己沉浸在 IT 或技术中,那么您可能会永远追求与时俱进。每天都会出现新的漏洞,这对保持消息灵通提出了巨大的挑战。 构建和维护能够应对复杂攻击者的网络安全基础设施所面临的挑战是真实存…

idea的debug调试

目录 断点条件设置(condition) 断点表达式(evaluate expression) 断点回退(reset frame) 断点条件设置(condition) 条件断点,一般是满足我们设置的某个条件时,debug断点才会生效。这种条件断点设置,我们一般用在多重循环中。 这儿我们以li…

codeforces (C++ In Love )

题目: 翻译: 思路: 1、在一个集合中有多组线段,如果有不相交的两组线段,则输出YES,否则输出NO。 2、每次操纵可以选择增加一组线段或者删除一组线段后,输出YES或者NO。 3、用flag标记该线段是否…

数据结构: map与set的简单实现

目录 map与set的模拟实现 1.基本框架 2.模拟实现map与set所需要做的事 1.使用模板 , 达到泛性编程 2.比较问题 3.迭代器 RBTree中: operator operator-- 4.map [ ] 的实现 5.使用普通迭代器构造const迭代器 效果 map与set的模拟实现 1.基本框架 map set 2.模拟实…

nodejs+vue旅行社网站系统-计算机毕业设计

激发了管理人员的创造性与主动性,对旅行社网站系统而言非常有利。 模块包括主界面,首页、个人中心、用户管理、景点分类管理、旅游景点管理、景点购票管理、酒店信息管理、酒店预定管理、旅游路线管理、系统管理等进行相应的操作。 目 录 摘 要 I ABST…

力扣刷题 day52:10-22

1.数组拆分 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 方法一:排序 #方法一:排序 def arrayPai…

【计算机网络】UDP的报文结构和注意事项

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的协议,它在传输层中提供了简单、不可靠的数据传输服务。与TCP(Transmission Control Protocol,传输控制协议)不同,UDP不需要建立连接&…

驱动开发3 ioctl函数的使用+3个实例(不传递第三个参数、第三个参数为整型、第三个参数为地址)

开发板:stm32mp157aaa(Cortex-A7*2 Cortex-M4*1)开发环境:vscode、串口工具 1 引入ioctl函数的意义 linux操作系统中有意将数据的读写和读写功能的选择分别交给不同的函数去完成。就让read/write函数只进行数据的读写即可&#x…

手把手创建属于自己的ASP.NET Croe Web API项目

第一步:创建项目的时候选择ASP.NET Croe Web API 点击下一步,然后配置: 下一步:

Openssl数据安全传输平台007:共享内存及代码的实现 ——待完善项目具体代码和逻辑

文章目录 0. 代码仓库1. 使用流程案例代码: 2. API解析2.1 创建或打开一块共享内存区2.2 将当前进程和共享内存关联到一起2.3 将共享内存和当前进程分离2.4 共享内存操作 -( 删除共享内存 ) 3. 思考问题3. ftok函数4. 共享内存API封装-以本项…

rust学习——栈、堆、所有权

文章目录 栈、堆、所有权栈(Stack)与堆(Heap)栈堆性能区别所有权与堆栈 所有权原则变量作用域所有权与函数返回值与作用域 栈、堆、所有权 栈(Stack)与堆(Heap) 栈和堆是编程语言最核心的数据结构,但是在很多语言中,你并不需要深入了解栈与堆。 但对于…

互联网Java工程师面试题·Java 面试篇·第五弹

目录 79、适配器模式和装饰器模式有什么区别? 80、适配器模式和代理模式之前有什么不同? 81、什么是模板方法模式? 82、什么时候使用访问者模式? 83、什么时候使用组合模式? 84、继承和组合之间有什么不同&#…