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.hqwc.cn/news/341917.html

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

相关文章

盘活存量GPU资源 破局高校算力不足窘境

“凭啥做大模型的优先分配算力?人家1个人4块A800,我们10个人用2块3090!这日子没法过了!”听着团队成员们的吐槽,某国内顶尖高校非大模型团队带队的博士老W也颇为无奈:“我们虽然不是做大模型的,…

npm发布js函数库

直接上干货吧 首先进入npm官网注册账号下面会用到 1.新建文件夹例如 chengyu 2.cdm chengyu 3.npm init (填写一些基本信息一直y就可以 后面可以直接修改文件)结束之后多了一个package.json文件就是下面的样子 {"name": "brogramme…

审稿变慢?还疯狂拒稿?这本毕业神刊如今争议不断,还值得一投吗?

【SciencePub学术】 IEEE ACCESS 期刊评说 网友辣评 评说1:麻了,11月17收到外审,现在意见还没回来啊,神刊肿么了? 评说2:两个审稿人评审的,一个拒绝(最终意见大修)&…

cad的模型怎么打散导入3d---模大狮模型网

将CAD中的模型打散并导入3D建模软件,需要以下步骤: 将CAD中的模型进行分组或分层:在CAD中,将模型按照不同的组或层进行分组或分层。这样可以方便地控制每个部分的显示和隐藏,在导入3D建模软件后,也可以更方…

初识Hadoop-概述与关键技术

一.大数据概述 1.什么是大数据 高速发展的信息时代,新一轮科技革命和变革正在加速推进,技术创新日益成为重塑经济发展模式和促进经济增长的重要驱动力量,而“大数据”无疑是核心推动力。 那么,什么是“大数据”呢&#xff1…

MySQL篇—自带物理克隆数据工具Clone插件介绍(第一篇,总共三篇)

各位小伙伴,今天我为大家介绍一下MySQL Clone Plugin这个插件,简单来说,就是MySQL 8.0.17版本之后的一个物理克隆数据工具,它能够帮助我们快速、高效地克隆或复制数据库,极大地简化了数据库迁移、备份和恢复的过程&…

Open CASCADE学习|创建旋转体

旋转体是一个几何概念,指的是通过旋转一个平面图形得到的立体图形。具体来说,一个平面图形绕着它所在的平面内的一条定直线旋转一周所形成的曲面,这个曲面会围成一个几何体,这个几何体就叫做旋转体。这条定直线被称为旋转体的轴。…

一、Sharding-JDBC系列01:整合SpringBoot实现分库分表,读写分离

目录 一、概述 二、案例演示-水平分表 (1)、创建springboot工程 (2)、创建数据库和数据表 (3)、application.yaml配置分片规则 (4)、测试数据插入、查询操作 4.1、插入-控制台SQL日志 4.2、查询-控制台SQL日志 三、案例演示-水平分库 (1)、创建数据库和数据表 (2…

JS逆向实战案例1——某房地产url动态生成

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、 反爬分析 url:aHR0cHM6Ly9uZXdob3VzZS4wNTU3ZmRjLmNvbQ 该站点项目url通过点击JS生成,project_id与生成后…

【uniapp】新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

一、uniapp和HBuilderX介绍 uni-app官方网站:https://uniapp.dcloud.net.cn/ 为什么要学习uniapp? 1、一套代码可以打包到不同的应用平台;一套代码编到十几个平台,这不是梦想。眼见为实,扫描以下二维码,…

【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 懒汉式(Lazy Initialization): 双重检查锁定(Double-Checked Locking)…

antd时间选择器,设置显示中文

需求 在实现react,里面引入antd时间选择器,默认显示为英文 思路 入口处使用ConfigProvider全局化配置,设置 locale 属性为中文来实现。官方文档介绍全局化配置 ConfigProvider - Ant Design 代码 import React from react; import { Prov…