Java:继承

news2025/6/16 10:33:09

文章目录

  • 每日一言
  • 什么是继承?
  • 子类怎么访问父类的成员变量?
    • 不同名的怎么访问?
    • 同名的怎么访问?
  • 子类怎么访问父类的成员方法?
    • 不同名的怎么访问?
    • 同名的怎么访问?
  • 如果我就是想访问同名的父类的成员怎么办?
  • 子类构造方法
  • Java中的继承方式
  • 来小小的总结一下:
  • 结语

每日一言

The best thing to hold noto in life is each other.
生命中最值得珍惜的便是彼此。——奥黛丽·赫本


什么是继承?

答:简单来说,将两个类中的共性提取出来,把它们放到一个新的类中,然后采用继承的思想来达到共用。

让我们来举个栗子:
我们先定义两个类:狗和猫

狗:
在这里插入图片描述
猫:
在这里插入图片描述

通过观察我们发现,这两个对象有相似的地方:
在这里插入图片描述
既然有一些地方是重复的,那我们能不能给他重新创建一个类,把它们都放进去,当我们使用的时候直接从这个类中拿呢?
Of course ,当然可以。

我们可以创建一个新的Animal类:
在这里插入图片描述
那怎么把Cat和Dog与Animal建立联系呢?
答:使用extends关键字
可以这样写:
在这里插入图片描述
在这里插入图片描述
以上就叫做继承。其中我们把Cat和Dog叫做子类(或派生类),Animal叫做父类(或基类超类)。
在这里插入图片描述

注意:

  1. 子类会将父类中的成员变量或者成员方法继承到子类中
  2. 子类继承父类后,子类要有自己特有的成员,不然就没有必要继承了

子类怎么访问父类的成员变量?

不同名的怎么访问?

让我们来测试一下:
在这里插入图片描述
运行结果:
在这里插入图片描述
通过测试我们发现:子类和父类的成员变量不同名时,我们可以在子类中直接访问父类的成员变量。

同名的怎么访问?

让我们来测试一下:
在这里插入图片描述

运行结果:
在这里插入图片描述

通过测试我们发现:子类和父类的成员变量同名时,优先访问子类的,如果子类中没有,则去访问父类的。

子类怎么访问父类的成员方法?

以下的问题我就不再测试了,直接写结论了,交给你们来测试一下

不同名的怎么访问?

答:不同名时,可以直接访问。

同名的怎么访问?

答:同名时,优先访问子类的成员方法,如果子类中没有就去访问父类的成员方法,如果还是找不到就报错。(编译器懵了qwq)

如果我就是想访问同名的父类的成员怎么办?

Java考虑的很周到,提供了super关键字,我们可以通过super.xxx的方式在子类方法中访问父类的成员。

举个栗子:
在这里插入图片描述
运行结果:
在这里插入图片描述

注意:

  1. super只能在非静态方法中使用,否则报错。
  2. 必须是在子类方法中,访问父类的成员变量或方法。

子类构造方法

当子类继承了父类之后,在实例化子类对象的时候要先帮助父类进行构造(初始化父类的成员)

class Parent {
    public Parent() {
        System.out.println("Parent");//父类构造方法
    }
}

class Subclasses extends Parent{
    public Subclasses() {
        System.out.println("Subclasses");//子类构造方法
    }
}

public class Test {
    public static void main(String[] args) {
        Subclasses subclasses = new Subclasses();
    }
}

以上代码的运行结果:
在这里插入图片描述
我们看到,实例化子类对象时,先调用了父类的构造方法输出了Parent,然后才调用子类的构造方法输出了Subclasses。

可见:
在实例化子类对象的时候先执行父类的构造方法,然后再执行子类的构造方法。

此时有人就要说了:临水,你看看上一个例子中的代码,你的父类没写任何的构造方法,而且在子类中也没有看见哪里调用了父类的构造方法,为啥刚刚写的代码不报错?你这不是搬起石头砸自己的脚么?

诶嘿嘿,不得不说,小伙子观察的挺细致,这是因为在子类构造方法中默认会调用父类的无参构造方法:super()
当用户没有写时,编译器会自动帮你添加。但你要小心了,一旦你写了编译器就不会自动添加了。

注意:super()必须是子类构造方法中的第一条语句,并且它只能出现一次,否则报错。

Java中的继承方式

在Java中只支持以下几种继承方式:

  1. 单继承
public class A{
	//.....
}

public class B extends A{
	//.....
}
  1. 多层继承
public class A{
	//.....
}

public class B extends A{
	//.....
}

public class C extends B{
	//.....
}
  1. 不同类继承同一个类
public class A{
	//.....
}

public class B extends A{
	//.....
}

public class C extends A{
	//.....
}

注意:在Java中不支持多继承!

来小小的总结一下:

  1. 继承就是将两个类的共性提取出来,放到一个类中,从而实现代码的简化
  2. 在子类中访问父类的不同名成员时,直接使用就行。
  3. 在子类中访问父类的同名成员时,优先访问子类的。如果就是想访问父类的,需要用super关键字来访问。
  4. 在实例化子类对象的时候先执行父类的构造方法,然后再执行子类的构造方法。
  5. 在Java中支持单继承、多层继承和不同类继承同一个类。但不支持多继承。

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


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

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

相关文章

每日一题leetcode第2834:找出美丽数组的最小和

目录 一.题目描述 二.思路及优化 三.C代码 一.题目描述 二.思路及优化 首先我们看到这个题,就是根据给出的数组元素个数N,从[1,N]找出N个元素,使得N个元素的和最小,其中随便抽两个数出来,两个数之和不能为…

《2024国家自然科学基金青年基金》 相关申请注意事项解读

一 年龄计算 2004 对应 89 2005 对应 90 2006 对应 91 2007 对应 92 2008 对应 93 2009 对应 94 2010 对应 95 .。。 二 资助比例(2023) 2024年 23.13% 2023年 24% 三 2024年政策变动,只能申请3年的30万,不能像23年一样选择10-20的…

UE5.1_使用技巧(常更)

UE5.1_使用技巧(常更) 1. 清除所有断点 运行时忘记蓝图中的断点可能会出现运行错误的可能,务必运行是排除一切断点,逐个排查也是办法,但是在事件函数多的情况下会很复杂且慢节奏,学会一次性清除所有很有必…

【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

前言 Selenium模拟用户在浏览器中的操作,比如点击按钮。在某些场景下,我们需要模拟鼠标悬停的操作,来触发一些隐藏的元素。本文将介绍Python Selenium实现鼠标悬停操作。 鼠标悬停,即当光标与其名称表示的元素重叠时触发的事件&…

【js刷题:数据结构数组篇之二分查找】

二分查找 一、什么是二分查找法二、具体实现步骤1.确定确定target所在数组的**左右边界**左闭右闭左闭右开 2.取中间值左闭右闭左闭右开 3.中间元素目标值4.中间元素大于目标值5.中间元素小于目标值6.重复 三、使用条件四、js版本示例1.左闭右闭2.左闭右开 五、力扣刷题1.搜索插…

魔众智能AI系统v2.1.0版本支持主流大模型(讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini)

支持主流大模型(讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini) [新功能] 系统全局消息提示 UI 全新优化 [新功能] JS 库增加【ijs】类型字符串,支持默认可执行代码 [新功能] 分类快捷操作工具类 CategoryUtil [新功能…

手写简易操作系统(三)--加载Loader

前情提要 上一节我们讲了如何启动计算机,这一节我们讲如何加载内核,内核是存在于硬盘上的一段程序,要加载这段程序,那么必然需要从硬盘上读取数据,这里我们就需要使用 ATA PIO 模式 根据ATA规范,所有符合A…

基于java+springboot+vue实现的学生信息管理系统(文末源码+Lw+ppt)23-54

摘 要 人类现已进入21世纪,科技日新月异,经济、信息等方面都取得了长足的进步,特别是信息网络技术的飞速发展,对政治、经济、军事、文化等方面都产生了很大的影响。 利用计算机网络的便利,开发一套基于java的大学生…

「蓝桥·算法双周赛」第七场分级赛——小白入门赛

题目列表 说明 好久没打蓝桥杯的比赛&#xff0c;回来试试水&#xff0c;就开了第1、2、3一共三个题&#xff0c;第4题可惜了。1.thanks,mom【算法赛】 思路&#xff1a; 没什么好说的&#xff0c;但是当时比赛刚开始服务器有问题&#xff0c;基本提交的全WA了。#include <…

Learn OpenGL 04 纹理

纹理环绕方式 纹理坐标的范围通常是从(0, 0)到(1, 1)&#xff0c;那如果我们把纹理坐标设置在范围之外会发生什么&#xff1f;OpenGL默认的行为是重复这个纹理图像&#xff08;我们基本上忽略浮点纹理坐标的整数部分&#xff09;&#xff0c;但OpenGL提供了更多的选择&#xf…

java中的字符串比较(题目作示例)

错误的代码 import java.util.Scanner; public class one {public static void main(String[] args) {Scanner scnew Scanner(System.in);String b"47568";int i0;for ( i 0; i <3; i){String asc.next();if(ab){System.out.println("密码正确&#xff0c;登…

鸿蒙开发(二)-项目结构

鸿蒙开发(二)-项目结构 上篇文章我们讲了如何配置鸿蒙开发的基础环境&#xff0c;以及创建了第一个鸿蒙程序。 这篇我们讲述了鸿蒙应用的项目目录结构。 如图所示&#xff1a;我们切换项目project可以看到。 另一种则是Ohos模式: AppScope->app.json5 应用的全局配置 {&q…

300分钟吃透分布式缓存-23讲:Redis是如何淘汰key的?

淘汰原理 首先我们来学习 Redis 的淘汰原理。 系统线上运行中&#xff0c;内存总是昂贵且有限的&#xff0c;在数据总量远大于 Redis 可用的内存总量时&#xff0c;为了最大限度的提升访问性能&#xff0c;Redis 中只能存放最新最热的有效数据。 当 key 过期后&#xff0c;或…

【vue.js】文档解读【day 2】 | 响应式基础

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 响应式基础声明响应式状态(属性)响应式代理 vs 原始值声明方法深层响应性DOM 更新时机有状态方法 响应式…

html--彩虹爱心

文章目录 js内容cssreset.min.cssstyle.css html内容 js内容 const colors ["#e03776","#8f3e98","#4687bf","#3bab6f","#f9c25e","#f47274"]; const SVG_NS http://www.w3.org/2000/svg; const SVG_XLINK &q…

VUE3 使用axios网络请求

1.新建工程 参考&#xff0c;VUE3 环境搭建&#xff1a;https://blog.csdn.net/LQ_001/article/details/136293795&#xff0c;运行命令 vue create vue-demo 2.引入axios 不管何种引用&#xff0c;都要在工程中安装 axios 包。安装命令&#xff1a;npm install --save axio…

基于springboot实现数据资产管理系统 项目【项目源码+论文说明】

基于springboot实现数据资产管理系统演示 摘要 固定资产管理系统主要是完成对系统用户管理、资产信息管理、资产变更管理、资产用途管理、资产类别管理和资产增减管理。因为利用本系统管理员可以直接录入信息&#xff0c;修改信息&#xff0c;删除信息&#xff0c;并且若在录入…

智能革新:2024年AI辅助研发的挑战、机遇与未来展望

引言 在进入2024年的门槛时&#xff0c;我们站在了一个科技飞速发展的新纪元&#xff0c;其中&#xff0c;人工智能&#xff08;AI&#xff09;的持续进步和应用扩展无疑是推动这一变革的强大动力。AI辅助研发&#xff0c;作为将人工智能技术应用于科研和产品开发过程的一种模…

C++内存管理篇

文章目录 1. C/C内存分布2. C中的内存管理方式3. operator new和operator delete函数4. new和delete的实现原理5. 定位new表达式(placement-new) 1. C/C内存分布 C语言中&#xff0c;为了方便管理内存空间&#xff0c;将内存分成了不同的区域&#xff0c;每个区域管理不同的数据…

未来已来!AI大模型引领科技革命

未来已来&#xff01;AI大模型正以惊人的速度引领着科技革命。随着科技的发展&#xff0c;人工智能在各个领域展现出了非凡的能力和潜力&#xff0c;大模型更是成为了科技领域的明星。从自然语言处理到图像识别&#xff0c;从智能推荐到语音识别&#xff0c;大模型的应用正在改…