java 继承(上)

news2024/11/15 17:44:38

在说继承之前,先看Student、Teacher这两个类,通过下面的代码可以看出什么?

细心的你可能已经有所发现了,那就是它们都含有相同的属性和方法。

如果把相同特征提取出来,放到一个类中,暂时先把这个类叫做 TandS 类,就变成下面这样。

由于Teacher类和Student类把相同的属性和方法都提取出来放到了TandS类中,所以,它们自己的一些属性和方法肯定用不了了,但是它们确实需要用,怎么办呢?这时就想,有没有一种机制能够让Teacher类和Student类拥有TandS类中的属性和方法呢?答案是有的,那就是让它们产生一种关系即可,这种关系就是继承关系。

1、继承概述

继承是面向对象三大特征之一。可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

继承的格式:

  • 格式:public class 子类名extends 父类名(}
  • 范例:public class Zi extends Fu{}
  • Fu:是父类,也被称为基类、超类
  • Zi:是子类,也被称为派生类

下面看代码实现:

(1)Fu类的代码实现

public class Fu {
    public void show(){
        System.out.println("show 方法被调用。。");
    }
}

(2)Zi类的代码实现

public class Zi extends Fu{
    public void method(){
        System.out.println("method 方法被调用。。");
    }
}

(3)Test类的代码实现

public class Test {
    public static void main(String[] args) {
         Fu f = new Fu();
         f.show();

        Zi z = new Zi();
        z.method();
        z.show();

    }
}

(4)运行结果

2、继承中子类的特点

(1)子类可以有父类的内容;

(2)子类还可以有自己特有的内容。

3、继承的好处和弊端

(1)继承好处

  • 提高了代码的复用性,多个类相同的成员(成员变量和成员方法)可以放到同一个类中;
  • 提高了代码的维护性,如果方法的代码需要修改,修改一处即可。

(2)继承弊端

  • 继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削了子类的独立性

(3)什么时候使用继承?

  • 继承体现的关系:is a;
  • 假设:我有两个类A和B,如果他们满足A是B的一种,或者B是A的一种,就说明他们存在继承关系,这个时候就可以考虑使用继承来体现,否则就不能滥用继承;
  • 举例

        ① 苹果和水果:苹果是一种水果,所以可以用继承。

        ② 猫和动物:猫是动物的一种,所以可以用继承。

        ③ 猫和狗:猫是狗的一种吗?或者狗是猫的一种吗?都不是吧,所以它们不可以用继承。

4、继承的注意事项

(1)Java中类只支持单继承,不支持多继承

(2)Java中类支持多层继承

本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!

创作不易,如果对你有点帮助的话麻烦点个赞支持一下!

新手小白,欢迎留言指正!

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

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

相关文章

【Linux】多线程概念 | POSIX线程库

文章目录 一、线程的概念1. 什么是线程Linux下并不存在真正的多线程,而是用进程模拟的!Linux没有真正意义上的线程相关的系统调用!原生线程库pthread 2. 线程和进程的联系和区别3. 线程的优点4. 线程的缺点5. 线程异常6. 线程用途 二、二级页…

25.删除链表中倒数第N个结点

题意:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyHeadnew ListNode(0); //定义虚拟头结点ListNode* fastdummyHead; //定…

32.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-网络数据分析原理与依据

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:31.其它消息的实…

浅谈游戏地图中位置实时更新的技术方案

地图如今在游戏中发挥的作用越来越重要,随着电子竞技的兴起,地图逐渐成为了为玩家创造体验的直接舞台。希望本文能对有兴趣了解游戏地图背后实现原理的同学一些帮助。 什么是游戏地图 在游戏中可以通过3D场景虚拟一个完整的世界,当3D场景较为…

基于springboot的大学生租房平台系统

技术:springbootmysqlvue 一、系统背景 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生租房信息管理混乱…

C语言每日一题07

一、题目 二、解析 逻辑与 &&、逻辑或 || 均有“短路”特性: 逻辑与&&“短路”:当逻辑与&&的左操作数为逻辑 “假“ 时,就足以判断该逻辑运算的结果为假了,故右操作数就不再被执行。 逻辑或||“短路”&#xff1a…

使用PLCSIM Advanced仿真博途运动控制

作者顾工首先,添加一个CPU,直接添加一个1518T,反正仿真,不用最好的干嘛呢。是吧。当然,你也可以添加一个你喜欢的PLC,这里不强求。 然后添加工艺对象,我们简单添加一个定位轴。 在工艺对象&am…

GPT-5揭秘:Lex Fridman与Sam Altman播客热议,AGI时代的新变革即将来临!

嘿,朋友们,你们知道吗?Lex Fridman和Sam Altman又聚在一起了,这次是在播客上。 在播客中,他们聊了很多,包括董事会的幕后故事、Elon Musk的诉讼案,甚至还提到了Ilya、Sora这些名字。 但真正让…

跟着官方文档一步一步搭建Elastic Stack(3节点ES集群+Kibana+Filebeat+Metricbeat)

文章目录 源码仓库硬件要求配置文件docker-compose.ymlfilebeat.ymlmetricbeat.yml 配置项解读以及注意事项docker-compose.yml解读filebeat配置解读metricbeat配置解读SSL配置ILM配置 运行运行截图 写在最后 本篇文章是使用Filbeat将产品环境的access_lo同步至Elastic Stack中…

SSTI漏洞详解

目录 前备知识 模块引擎: 模块渲染函数: 继承关系: SSTI漏洞简介 SSTI漏洞成因 SSTI漏洞原理 一些常见模块介绍 php Twig模块引擎 代码演示1 Twig模块引擎代码演示2 python flask模块 代码演示1: python jinja模块 代…

Net安卓app BroadcastReceiver 使用记录一坑

1.背景 由于项目需要,需要对接别的app的广播,就看了看Net 安卓开发的广播接收,看官网的介绍单纯广播和接收都挺简单的,于是上手样板项目弄了两个demo出来,app1用来发,app2用来收。 2.版本 :使…

2024格行VS华为VS飞猫哪个是最值得购买随身WiFi?中兴随身WiFi好用吗?

经常出差旅行,或者户外工作的朋友因为长期在外,手机流量经常不够用,想必都是随身WiFi的忠实用户,但是也都被这款产品割韭菜割的头皮发麻。今天,我们统计了市面上最靠谱的、最热销、口碑最好的几款随身WiFi。排名依据来…

查询表中数据(全列/特定列/表达式,where子句(比较/逻辑运算符),order by子句,limit筛选分页),mysql执行顺序

目录 select 全列查询 特定列查询 用表达式查询 (as) 名字 distinct 去重 where子句 比较运算符 列数据之间的比较 ​编辑 别名不能参与比较 null查询 between and in ( ... , ...) 模糊匹配 逻辑运算符 order by子句 可以使用别名 总结mysql执行顺…

【蓝桥杯选拔赛真题71】python判断字符 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python判断字符 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python判断字符 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…

Google colab中如何从kaggle中接入数据?

写在前面 使用google colab进行数据分析和探索时,可引用的数据源包括但不限于:1.可上传的数据文件用本地加载的的方式打开数据资源;2.从网络链接中直接打开后加载到缓存中的文件资源;3.通过API或者外部的开放接口加载数据&#x…

软考 网络工程师 每日学习打卡 2024/3/21

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论,在此基础上深入理解网络安全协议的工作原理,并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…

C语言之strsep用法实例(八十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

除了Confluence,有没有其他工具一样好用?

每个团队都需要一个协同工作工具,以更有效地管理任务、跟踪进度和分享知识。这就是Atlassian的Confluence发挥作用的地方。然而,尽管它相当强大,其昂贵的价格和复杂的界面可能会让某些用户望而却步。所以,还有其他工具可以替代Con…

面试算法-65-二叉树的层平均值

题目 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的…

python中获取当前项目的目录

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 今天介绍一下,如何在python中获取当前项目所在的目录,而不是运行脚本的目录。 class ProjectPaths:# 初始化时获取当前脚本的路径staticmethoddef get_script_dir():…