Java面向对象 继承

news2024/9/24 21:21:54

目录

  • 继承
  • 继承的好处
  • 继承具有传递性
  • 实例
    • 创建Person类
    • Student继承Person类
    • 测试

继承

  • Java中的继承是面向对象编程的一个核心特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。通过继承,子类可以复用父类的代码,减少重复的代码量,并扩展父类的功能。

  • 在Java中,继承使用extends关键字表示。子类可以继承父类的所有非私有成员变量和成员方法,并可以添加自己的新方法和属性。子类还可以通过重写父类的方法来改变父类方法的实现。

  • 继承是Java面向对象三大特性之一,其他两个特性是封装和多态。通过继承,可以实现代码重用和建立类之间的层次结构,使代码更加清晰、易于维护和扩展。

  • 值得注意的是,Java只支持单继承,即一个子类只能继承一个父类。但一个类可以间接继承其他类,例如:C类继承B类,B类继承A类,则C类间接继承A类。另外,如果一个类没有显式地继承任何类,则默认继承Java SE库中的java.lang.Object

继承的好处

  1. 提高代码的复用性
  2. 便于代码的扩展
  3. 为了以后多态的使用。是多态的前提
  • 父类定义的内容,子类可以直接拿过来用就可以了,不用代码上反复重复定义了

  • 需要注意的点:

    • 父类private修饰的内容,子类实际上也继承,只是因为封装的特性阻碍了直接调用,但是提供了间接调用的方式,可以间接调用。

继承具有传递性

继承具有传递性:

Student -->继承自 Person -->继承自Object
Object类是所有类的根基父类。
所有的类都直接或者间接的继承自Object

实例

创建Person类

public class Person {
    //属性:
    private int age;
    private String name;
    private double height;
    //提供setter getter方法:
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    //方法:
    public void eat(){
        System.out.println("可以吃饭");
    }
    public void sleep(){
        System.out.println("可以睡觉");
    }
}

Student继承Person类

public class Student extends Person {//子类Student 继承  父类Person
    //属性:
    private int sno;//学号
    public int getSno() {
        return sno;
    }
    public void setSno(int sno) {
        this.sno = sno;
    }
    //方法:
    public void study(){
        System.out.println("学生可以学习");
    }
}

测试

public class Student extends Person {//子类Student 继承  父类Person
    //属性:
    private int sno;//学号
    public int getSno() {
        return sno;
    }
    public void setSno(int sno) {
        this.sno = sno;
    }
    //方法:
    public void study(){
        System.out.println("学生可以学习");
    }
}

在这里插入图片描述

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

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

相关文章

mysql 对于null字段排序处理

最近遇到一个需求 ,需要对一个报表的多个字段进行多字段复杂条件排序 排序字段为NULL时 Mysql对于排序字段为NULL时,有自身默认的排序规则,默认是认为null 值 是无穷小 ELECT id,script_id,last_modified,live_count,next_show FROM virtua…

PKI - 05 证书申请步骤

文章目录 Pre概述第一步:时间同步第二步: 部署证书服务器第三步: 客户端产生密钥第四步: 验证证书服务器第五步: 申请个人证书第六步: 审核并签名证书第七步: 颁发数字证书第八步: 交换公钥 Pre PKI - 02 对称与非对称密钥算法 PKI - 03 密钥管理(如何…

Docker Compose实例

目录 一、前提说明 二、简单的Docker容器部署案例 1. Dockerfile 配置 2. docker-compose.yml 配置 3. application.properties 配置 4. pom.xml 配置 5. 上传文件 6. 创建基础Docker镜像 7. docker-compose.yml编排 8. 停止并删除容器编排 一、前提说明 在配置好Do…

路由器如何映射端口映射?

在现代互联网中,随着网络应用的不断发展,很多用户需要进行远程访问或搭建服务器来满足自己的需求。由于网络安全的原因,直接将内网设备暴露在公网中是非常危险的。为了解决这个问题,路由器映射端口映射技术应运而生。本文将介绍什…

STM32控制JQ8400语音播报模块

时间记录:2024/2/7 一、JQ8400引脚介绍 标示说明ONE LINE一线操作引脚BUSY忙信号引脚,正在播放语音时输出高电平RX串口两线操作接收引脚TX串口两线操作发送引脚GND电源地引脚DC-5V电源引脚,3.3-5VDAC-RDAC输出右声道引脚DAC-LDAC输出左声道…

2023年第四季度硬盘容量强势增长9%

在2023年第四季度(CQ4 23),硬盘驱动器(HDD)市场的总容量出货量环比增长9%,达到214EB,而单位出货量保持在2900万块不变。其中,近线存储(Nearline)硬盘的容量出…

【MySQL】MySQL复合查询--多表查询/自连接/子查询

文章目录 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单行子查询4.2多行子查询4.3多列子查询4.4在from子句中使用子查询4.5合并查询4.5.1 union4.5.2 union all 1.基本查询回顾 表的内容如下: mysql> select * from emp; ----------------------------------…

基于Skywalking开发分布式监控(二)

续上篇,上一篇主要是讲了为啥选skywalking,以及怎么有针对性改造SW Agent,现在我们继续看看如何构建自定义Trace跟踪链 要对SW Agent插件做适当剪裁,原来包括customize插件在内SW 8.9有100多个插件,如果没有作用也就罢…

C#调用WechatOCR.exe实现本地OCR文字识别

最近遇到一个需求:有大量的扫描件需要还原为可编辑的文本,很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的,结果用了几个开源库,效果不理想。后来,用了取巧的方法,直接使用了WX的OCR识别模…

STM32 新建寄存器版本MDK工程简要步骤

新建工程文件夹 新建一个工程根目录文件夹,并在该文件夹里新建D/M/O/P/U文件夹。 Drivers:存放与硬件相关的驱动层文件Middlewares:存放正点原子提供的中间层组件文件和第三方中间层文件Output:存放工程编译输出文件Projects&am…

介绍一下BFS

BFS,即广度优先搜索(Breadth-First Search),是一种图形搜索算法,用于在图或树等数据结构中遍历或搜索节点。这种算法从根节点开始,沿着树的宽度遍历树的节点,直到找到目标节点或遍历完所有节点。…

cnpm : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\cnpm.ps1

cnpm命令被禁止使用 我已经安装cnpm ,但是使用不了,重新安装也没用。 报错如下图: cnpm无法使用报错 解决问题 1、打开系统Windows PowerShell,使用管理员身份运行。 打开Windows PowerShell 2、输入set-ExecutionPolicy RemoteSigned&a…

FPGA_工程_按键控制的基于Rom数码管显示

一 信号 框图: 其中 key_filter seg_595_dynamic均为已有模块,直接例化即可使用,rom_8*256模块,调用rom ip实现。Rom_ctrl模块需要重新编写。 波形图: 二 代码 module key_fliter #(parameter CNT_MAX 24d9_999_99…

BlueLotus 下载安装使用

说明 蓝莲花平台BlueLotus,是清华大学曾经的蓝莲花战队搭建的平台,该平台用于接收xss返回数据。 正常执行反射型xss和存储型xss: 反射型在执行poc时,会直接在页面弹出执行注入的poc代码;存储型则是在将poc代码注入用…

grafana+prometheus+hiveserver2(jmx_exporter+metrics)

一、hiveserver2开启metrics&#xff0c;并启动jmx_exporter 1、修改hive-site.xml文件开启metrics <property><name>hive.server2.metrics.enabled</name><value>true</value> </property> <property><name>hive.service.m…

idea 配置文件,中文出现乱码如何解决

在进行 spring 项目开发时&#xff0c;项目中有 application.properties/application.yml 等配置文件&#xff0c;在配置文件中使用中文注解时可能会出现乱码的情况&#xff0c;如下&#xff1a; 这是因为 idea 配置文件的编码和其他文件的不同&#xff0c;我们需要修改配置文件…

特征工程:特征提取和降维-上

目录 一、前言 二、正文 Ⅰ.主成分分析 Ⅱ.核主成分分析 三、结语 一、前言 前面介绍的特征选择方法获得的特征&#xff0c;是从原始数据中抽取出来的&#xff0c;并没有对数据进行变换。而特征提取和降维&#xff0c;则是对原始数据的特征进行相应的数据变换&#xff0c;并…

leetcode707. 设计链表

leetcode707. 设计链表 题目 思路 1.使用虚头节点&#xff0c;模拟class的初始化 2.class中添加一个链表长度的属性&#xff0c;便于后续操作 代码 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextclass MyLinkedList:def __init__(self)…

优化梯度下降算法

文章目录 Optimization problemNormalizing inputsvanishing/exploding gradientsweight initializegradient checkNumerical approximationgrad check Optimize algorithmmini-bach gradientmini-batch size exponential weighted averagesBias correctionMomentum RMSpropAda…

Q-Tester:适用于开发、生产和售后的诊断测试软件

Q-Tester.Expert是一款基于ODX&#xff08;ASAM MCD-2D / ISO 22901-1&#xff09;国际标准的工程诊断仪。通过此诊断仪可实现与ECU控制器之间的数据交互。这一基于ODX国际标准的解决方案&#xff0c;其优势在于&#xff1a;ODX数据库不仅可在开发部门交互&#xff0c;而且可在…