面向对象三大特征之二:继承

news2024/12/23 8:15:38

继承的快速入门

什么是继承?

  • Java中提供了一个关键字extends,用这个关键字,可以让一个类与另一个类建立起父子关系

继承的特点

  • 子类能继承父类的非私有成员(成员变量、成员方法)

继承后对象的创建

  • 子类的对象是由子类、父类共同完成的

A类

//父类
public class A {
    //公开成员
    public int i;
    public void print1(){
        System.out.println("====print1====");
    }

    //私有成员
    private int j;
    private void print2(){
        System.out.println("====print2====");
    }
}

B类

//子类
public class B extends A{
    private int k;
    public void print3(){
        //子类可以继承父类的非私有成员
        System.out.println(i);
        print1();
        //System.out.println(j); //报错
        //print2(); //报错
    }
}

Test类

public class Test {
    public static void main(String[] args) {
        // 目标:认识继承,掌握继承的特点
        B b = new B();
        System.out.println(b.i);
        //System.out.println(b.j); //报错
        //System.out.println(b.k); //报错

        b.print1();
        //b.print2(); //报错
        b.print3();
    }
}

使用继承的好处

  • 减少重复代码的编写

案例需求:

        某员工系统中需要处理员工和讲师的数据

People类

public class People {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Teacher类

public class Teacher extends People{
    private String skill;

    public String getSkill() {
        return skill;
    }

    public void setSkill(String skill) {
        this.skill = skill;
    }

    public void ptintInfo(){
        System.out.println(getName() + "具备的技能:" + skill);
    }
}

Test类

public class Test {
    public static void main(String[] args) {
        //目标:搞清继承的好处
        Teacher t = new Teacher();
        t.setName("张三");
        t.setSkill("java、String");
        System.out.println(t.getName());
        System.out.println(t.getSkill());
        t.ptintInfo();
    }
}

继承相关的注意事项

权限修饰符

什么是权限修饰符

  • 就是用来限制类中的成员(成员变量、成员方法、构造器、代码块……)能够被访问的范围

权限修饰符由几种?各自的作用是什么?

修饰符在本类中在同一包下的其他类里在任意包下的子类里任意包下的任意类里
private
缺省
protected
public

单继承、Object 

Java是单继承的,Java中的类不支持多继承,但是支持多层继承

Object类

  • Object类是Java所有类的祖宗类。我们写的任何一个类,其实都是object的子类或者子孙类

方法重写

什么是方法重写?

  • 当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。
  • 注意:重写后,方法的访问,Java会遵循就近原则。

方法重写的其它注意事项

  • 重写小技巧:使用Override注解,他可以指定Java编译器,检查我们的方法重写的格式是否正确,代码可读性也会更好
  • 子类重写父类方法时,访问权限必须大于或等于父类该方法的权限(public>protected>缺省)
  • 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小
  • 私有方法、静态方法不能被重写,如果重写会报错

方法重写在开发中的常见应用场景

  • 子类重写Object类的toString()方法,以便返回对象的内容。

子类中访问其他成员的特点

1、在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。

  • 先子类局部找范围
  • 然后子类成员范围找
  • 然后父类成员范围找,如果父类范围还没有找到则报错

2、如果父类中,出现了重名的成员,会优先使用子类的,如果此时一定要在子类中使用父类的怎么办?

  • 可以通过super关键字,指定访问父类的成员:super.父类成员变量/父类成员方法

子类构造器的特点

  • 子类的全部构造器,都会先调用父类的构造器,在执行自己。

补充:this(…)调用兄弟构造器

  • 在任意的构造器中,都可以通过this(…)去调用该类的其他构造器。

this(…)和super(…)使用时的注意事项

  • this(…)和super(…)都只能放在构造器的第一行,因此,有了this(…)就不能写super(…)了,反之亦然。

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

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

相关文章

商用机器人,不好用是原罪

热潮褪去后,所有的问题都汇总成一个词,不好用。 从炙手可热到“大玩具” 一款产品好用与否,更多时候人们不会关心它先进的技术、工艺、用料,也不会考虑所谓的潮流趋势或前景,只会用最朴素的直观感受告诉你&#xff0…

TrustZone之总线请求

接下来,我们将查看系统中的总线请求者,如下图所示: 系统中的A型处理器具有TrustZone感知,并在每个总线访问中发送正确的安全状态。然而,大多数现代SoC还包含非处理器总线请求者,例如GPU和DMA控制器。 与完成…

Modbus转Profinet网关使用方法

Modbus转Profinet网关(XD-MDPN100/200)是用于将Modbus协议和Profinet协议进行转换并进行通迅的设备。Modbus转Profinet网关(XD-MDPN100/200)无论是新项目还是改造项目都可轻松配置完成通迅互联。 正确的安装和配置对于确保设备的正…

讨好型人格最适合从事什么职业?

讨好型人格,其言行不是考虑个人,而是以满足对方为主,只要是他人的想法,都会尽力去满足,特别害怕自己做了什么事情,让对方产生不满的想法。遇到事情,也很难主动请求别人,总是依靠自己…

Hudi 在 vivo 湖仓一体的落地实践

作者:vivo 互联网大数据团队 - Xu Yu 在增效降本的大背景下,vivo大数据基础团队引入Hudi组件为公司业务部门湖仓加速的场景进行赋能。主要应用在流批同源、实时链路优化及宽表拼接等业务场景。 一、Hudi 基础能力及相关概念介绍 1.1 流批同源能力 与H…

Caused by: java.net.ConnectException: 拒绝连接: hadoop104/192.168.124.130:4142

项目场景:hadoop102接收消息,自定义拦截器,包含hello的发往hadoop103,不包含的发往hadoop104 报错原因: 原因1: 应该先开启接收方(服务端),hadoop103,hadoop104,最后开启hadoop10…

如何安装LUT预设?达芬奇/FCP/PR怎么安装LUT预设.cube格式文件的教程

在下载的LUT调色预设压缩文件包中,通常两个包含不同格式的LUT文件: .cube 和 .xmp 包含的 .cube 文件几乎与主流的视频编辑和色彩校正软件兼容,并且还可以在 Adobe Photoshop 等一些照片应用程序中使用。如果主要是将这些 LUT 用于视频剪辑项…

Vue3-21-组件-子组件给父组件发送事件

情景描述 【子组件】中有一个按钮,点击按钮,触发一个事件, 我们希望这个事件的处理逻辑是,给【父组件】发送一条消息过去, 从而实现 【子组件】给【父组件】通信的效果。这个问题的解决就是 “发送事件” 这个操作。 …

KubeKey 离线部署 KubeSphere v3.4.1 和 K8s v1.26 实战指南

作者:运维有术 前言 知识点 定级:入门级了解清单 (manifest) 和制品 (artifact) 的概念掌握 manifest 清单的编写方法根据 manifest 清单制作 artifactKubeKey 离线集群配置文件编写KubeKey 离线部署 HarborKubeKey 离线部署 KubeSphere 和 K8sKubeKey…

2023-12-16:用go语言,给定整数数组arr,求删除任一元素后, 新数组中长度为k的子数组累加和的最大值。 来自字节。

2023-12-16:用go语言,给定整数数组arr,求删除任一元素后, 新数组中长度为k的子数组累加和的最大值。 来自字节。 答案2023-12-16: 来自左程云。 灵捷3.5 大体步骤如下: 算法 maxSum1 分析&#xff1…

12345、ABCDE项目符号列表文字视频怎么制作?重点内容介绍PR标题模板项目工程文件

Premiere模板,包含10个要点标题12345、ABCDE项目符号列表文字模板PR项目工程文件。可以根据自己的需要定制颜色。在视频的开头、中间和结尾使用。包括视频教程。 适用软件:Premiere Pro 2019 | 分辨率:19201080 (HD) | 文件大小:9…

金融众筹系统源码:适合创业孵化机构 附带完整的搭建教程

互联网技术的发展,金融众筹作为一种新型的融资方式,逐渐成为创业孵化机构的重要手段。为了满足这一需求,金融众筹系统源码就由此而生,并附带了完整的搭建教程。 以下是部分代码示例: 系统特色功能一览: 1.…

数据迁移测试经验分享

以下为作者观点: 数据迁移,是在保证新旧系统业务连续性的前提下,将数据从旧数据库迁移到新数据库的过程,测试前通过迁移策略和方案了解新旧系统数据如何重构与关联,测试过程需确保数据迁移的正确性,主要体…

《Linux C编程实战》笔记:一些系统调用

目录 dup和dup2函数 fcntl函数 示例程序1 示例程序2 ioctl函数 dup和dup2函数 #include <unistd.h> int dup(int oldfd); int dup2(int oldfd, int newfd): dup 函数复制 oldfd 参数所指向的文件描述符。 参数&#xff1a; oldfd&#xff1a;要复制的文件描述符的…

【TB作品】基于单片机的实验室管理系统,STM32,GM65二维码扫描模块

硬件&#xff1a; &#xff08;1&#xff09;STM32F103C8T6最小板&#xff08;&#xff09; &#xff08;2&#xff09;GM65二维码扫描模块 &#xff08;3&#xff09;DS1302实时时钟模块 &#xff08;4&#xff09;AT24C02 存储设备 &#xff08;5&#xff09;蜂鸣器 &#xf…

git 上传大文件操作 lfs 的使用

我们要先去下载 下载后安装 我最后还是下载到了D:\git\Git\bin这个目录下 如何检查是否下载成功呢&#xff0c;用 git lfs install 在命令行运行就可以查看 下面怎么上传文件呢 首先我们还是要初始化文件的 git init 下一步输入命令 git lfs install 下一步 git lfs tra…

初级数据结构(五)——树和二叉树的概念

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;四&#xff09;——队列 | NULL 下一篇-> 1、树结构&#xff08;Tree&#xff09; 1.1、树结构的特点 自然界中的树由根部开始向上生长&#xff0c;随机长出分支&…

在Node.js中MongoDB查询分页的方法

本文主要介绍在Node.js中MongoDB查询分页的方法。 目录 Node.js中MongoDB查询分页使用原生的mongodb驱动程序查询分页使用Mongoose库进行查询分页注意项 Node.js中MongoDB查询分页 在Node.js中使用MongoDB进行查询分页&#xff0c;可以使用原生的mongodb驱动程序或者Mongoose库…

AtCoder ABC周赛2023 12/10 (Sun) D题题解

目录 原题截图&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注&#xff1a; 代码&#xff1a; 原题截图&#xff1a; 题目大意&#xff1a; 给定两个 的矩阵 和 。 你每次可以交换矩阵 的相邻两行中的所有元素或是交换两列中的所有元素。 请问要使 变换至…

LLaMA的解读与其微调:Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙/LLaMA 2

前言 近期&#xff0c;除了研究ChatGPT背后的各种技术细节 不断看论文(至少100篇&#xff0c;100篇目录见此&#xff1a;ChatGPT相关技术必读论文100篇)&#xff0c;还开始研究一系列开源模型(包括各自对应的模型架构、训练方法、训练数据、本地私有化部署、硬件配置要求、微调…