Java中继承的认识

继承是Java编程语言的三大特征之一(就是一个很重要的东西)。

想一下我们生活中的继承,比如说张三全部继承了他父亲的留下的50万资产,那张三的资产一定比他的父亲多(假设张三打工多年,自己存了100万),此时张三拥有了150万的资产,也就是说,张三比他的父亲厉害的多(他爸有的都有,没有的他也有)【通过继承,子类可以获得父类的所有功能,并根据需要进行拓展】。

Java编程语言中的继承是对生活的一种模拟,Java中的继承也是一个类似的概念,使用继承主要为了解决代码复用的问题(把一样的代码重复写好几次是一种很愚蠢的做法),当然你也可以选择复制粘贴,不过这将带来一个重要的隐患。

在B类中,我们可以复制A类中 getA() 、getB()、getC()方法,并在里面增添一个getD()方法,这样看起类来并没有什么问题。

不过当有一个方法需要传入一个对象的引用作为参数的时候(就是要用到类中的一个方法)

 compare(A  a,   A,b)

 if ( a.getA()  > b.getA() ){

                return 0;

   }

}

问题就出现了,对于compare方法,需要传递进来一个A类型的实例【的引用】(因为要用到A类中的getA()方法),然而B类中也有一个getA()方法,然而B类型的实例【的引用】却不能传入,因为A类和B类是两个完全不同的类。很明显通过复制粘贴这种简单的做法的兼容性不太好(compare()方法需要传递进一个具有getA()方法的对象【的引用】时,这个对象【的引用】只能是通过A类型的实例),很显然这样会降低程序的开发效率



为了解决上述问题,可以使用Java中类的派生,所谓派生,就是继承已有类的字段和方法等“资产,来创建新的类,另外,派生时不仅可以继承资产,还可以添加、重写字段和方法。使用一句话概括就是:"继承得到的类比原来的功能更加强大"

上面的案列我们通过继承进行改写,我们想使用继承就需要用到extends关键字,entends关键字在英语中是延申、拓展的意思,因此也可以将继承理解成是对类的拓展

public class Father {int a = 10;int b = 20;int c = 30;public void getA() {System.out.println("这是父类的A方法");}public void getB() {System.out.println("这是父类的B方法");}public void getC() {System.out.println("这是父类的C方法");}
}
public class Son extends Father{
public void getD(){System.out.println("这是子类中的d方法");
}
}

注意:

  • 子类不能访问父类的私有属性和方法

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

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

相关文章

QtService、托盘程序使用

1、QtService 使用QtService实现Qt后台服务程序 用QT创建一个Windows Service以及踩到的若干坑 2、托盘程序 Qt之程序最小化托盘显示及操作 Qt系统托盘程序的实现

【第33例】IPD体系进阶:市场细分

目录 内容简介 市场细分原因 市场细分主要活动 市场细分流程 作者简介 内容简介 这节内容主要来谈谈 IPD 市场管理篇的市场细分步骤。 其中,市场管理(Market Management)是一套系统的方法。 用于对广泛的机会进行选择性收缩,

Excel删除重复项?4个方法帮你提升效率!

“我在使用Excel处理一些数据时,突然发现有好多重复的项,我想将这些重复的项都删除,有什么快速又简单的操作方法吗?” 在日常的办公中,很多用户都会使用Excel。借助这款软件,用户可以完成对各种数据的处理。…

c++全排列

目录 next_permutation()函数 例 perv_permutation()函数 例 next_permutation()函数 next_pernutation()函数用于生成当前序列的下一个排序。它按照字典序对序列进行重新排序,如果存在下一个排列,则将当前序列更改为下一个排列,并返回t…

【平稳性检验】ADF检验原理及其MATLAB实现

ADF检验原理及其MATLAB实现 1 概述1.1 ADF检验的原理2 MATLAB函数3 案例参考1 概述 ADF检验(Augmented Dickey-Fuller test),也叫做单位根检验。顾名思义,ADF是 Dickey-Fuller检验(DF检验)的增广形式。DF检验只能应用于一阶情况,当序列存在高阶的滞后相关时,可以使用A…

【c++】string类型和int类型的互换

string类型转换成int类型 使用atoi函数即可实现string类型数据到int类型数据的转换。 例如&#xff0c; #include <typeinfo> #include <stdlib.h>//string类型转换成int类型 string str"33"; int dataatoi(str.c_str());//输出变量的类型进行查看 co…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户投票实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

深入理解 Flink(五)Flink Standalone 集群启动源码剖析

前言 Flink 集群的逻辑概念&#xff1a; JobManager(StandaloneSessionClusterEntrypoint) TaskManager(TaskManagerRunner) Flink 集群的物理概念&#xff1a; ResourceManager(管理集群所有资源&#xff0c;管理集群所有从节点) TaskExecutor(管理从节点资源&#xff0c;接…

ERROR in Plugin “react“ was conflicted .... 天坑留念-turborepo、eslint plugin

前两天项目代码拉下来&#xff0c;装完依赖启动的时候直接报错&#xff1a; [eslint] Plugin "react" was conflicted between ".eslintrc.js eslint-config-custom eslint-config-alloy/react" and "BaseConfig D:\pan\erp\test\business-servic…

迅为RK3588开发板编译 Buildroot单独编译图形化界面三

第三步&#xff1a;编译 Recovery 首先在 linux 源码目录下输入以下命令进入编译的 UI 界面&#xff0c;进入之后如下所示&#xff1a; ./build.sh 然后将光标移动到第四个 recovery&#xff0c;点击回车即可开始 recovery 的编译&#xff0c;编译过程如下所示&#xff1a; 编…

Vue 中修改 Element 组件的 下拉菜单(Dropdown) 的样式

Vue 中修改 Element 组件的 下拉菜单(Dropdown) 的样式 今天在项目中碰到一个 UI 改造的需求&#xff0c;需要根据设计图把页面升级成 UI 设计师提供的设计图样式。 到最后页面改造完了&#xff0c;但是 UI 提供的下拉菜单样式全部是黑色半透明的&#xff0c;只能硬着头皮改了。…

Terraform 的开源替代:OpenTofu 宣布 GA!

OpenTofu 社区于1月10日宣布 OpenTofu 项目 GA&#xff0c;这是 OpenTofu 的首个稳定版本&#xff08;https://github.com/opentofu/opentofu/releases/tag/v1.6.0&#xff09; &#xff01;OpenTofu 是 Linux 基金会下的一个由社区驱动的开源项目&#xff0c;是 Terraform 的开…

Netty开篇——基础介绍与准备(一)

I/O篇 Netty的介绍 Netty 是由JBOSS提供的一个Java开源框架在Github上Netty 是一个异步的、基于事件驱动的网络应用框架&#xff0c;用以快速开发高性能、高可靠性的网络IO程序。Netty 主要针对在TCP协议下面向客户端的高并发应用&#xff0c;或者Peer-to-Peer/P2P场景下的大量…

基于JavaWeb+BS架构+SpringBoot+Vue“共享书角”图书借还管理系统系统的设计和实现

基于JavaWebBS架构SpringBootVue“共享书角”图书借还管理系统系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 第1章 概 述 5 1.1 开发背景及研究意义 5 1.2 国内外研究…

【SpringMVC快速使用】1.@RestController @RequestMapping 2.logback的使用

背景&#xff1a;为何从这个最简单的 例子写起呢&#xff1f; 那是因为我们的管理后台之类的都是别人写的&#xff0c;我也听说了大家说&#xff1a;只用Post请求就足够了&#xff0c;但是却发现&#xff0c;在浏览器中测试时&#xff0c;默认是GET请求&#xff0c;如果直接写…

微服务概述之微服务架构

前言 为了解决单体应用的缺点&#xff0c;工程师们想到将原来大的单体应用进行拆分&#xff0c;化整为零形成独立的应用&#xff0c;不过此时这些应用没有直观的入口&#xff0c;因此用传统应用的概念来定义就不太妥当。于是诞生了“服务”&#xff0c;通过服务来描述这种功能…

SQL-DML增删改

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

Mac 使用nvm use命令无法切换node版本

解决方案&#xff1a;先卸载使用brew安装的node&#xff08; 具体操作请移步使用brew卸载node&#xff09;&#xff0c;再使用nvm use命令切换node版本。 问题复现&#xff1a;使用nvm use命令显示切换成功&#xff0c;但是实际版本还是原来的node版本&#xff0c;应该是与bre…

reduce求和方法

reduce求和方法&#xff0c;有两种语法&#xff1a; 语法1&#xff08;不带初始值&#xff09;&#xff1a; let 结果 arr.reduce( ( 累加的和, 数组元素) > {return 累加的和 数组元素 }) 示例如下&#xff1a; let arr [3,5,7,9] let sum arr.reduce((total,curr)…

MySQL的事务隔离级别脏读、幻读、不可重复读

一、MySQL的事务隔离级别 1、读未提交&#xff1a;一个事务还没提交时&#xff0c;它做的变更就能被别的事务看到。&#xff08;别人改数据的事务尚未提交&#xff0c;我在我的事务中也能读到。&#xff09; 2、读提交&#xff1a;&#xff08;Oracle、SQL Server默认&#x…