Java---类的继承

news2024/9/29 11:25:48

文章目录

    • 1. 理解继承
    • 2. 继承概述
    • 3. 代码块理解
    • 4. 继承的好处与弊端
    • 5. 继承中变量的访问特点
    • 6. super关键字
    • 7. 继承中构造方法访问特点
    • 8. 继承中成员方法访问特点
    • 9. 方法重写
    • 10. 方法重写注意事项
    • 11. Java继承注意事项


1. 理解继承

在这里插入图片描述

在这里插入图片描述

2. 继承概述

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

 2. 继承格式:public class 子类名 extends 父类名 {}。例如:public class Zi extends Fu {}

  • Fu:是父类,也被称为基类和超类。
  • Zi:是子类,也被称为派生类。

 3. 继承中子类的特点:(1) 子类可以有父类的内容。 (2) 子类还可以有自己特有的内容。

3. 代码块理解

public class Fu {
    public void show(){
        System.out.println("show方法被调用");
    }
}
public class Zi extends Fu {
    public void method(){
        System.out.println("method方法被调用");
    }
}
public class Demo {
    public static void main(String[] args) {
        Fu f=new Fu();
        f.show();
        Zi z=new Zi();
        z.method();
        z.show();
    }
}

在这里插入图片描述

4. 继承的好处与弊端

 1. 好处:(1) 提高了代码的复用性(多个类相同的成员可以放到同一个类中)。 (2) 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)。

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

 3. 继承的体现关系:is a。即什么是什么的一种,如苹果是水果的一种,猫是动物的一种。

5. 继承中变量的访问特点

 在子类方法中访问一个变量,顺序为:

  • 在子类局部范围找。
  • 在子类成员范围找。
  • 在父类成员范围找。
  • 如果都没有就报错。
public class Fu {
    public int age=30;
}


public class Zi extends Fu {
    public int height=180;
    public void  show(){
        System.out.println(age);
        System.out.println(height);
    }
}


public class Demo {
    public static void main(String[] args) {
        Zi z=new Zi();
        z.show();  //输出为30、180
    }
}
public class Fu {
    public int age=30;
}


public class Zi extends Fu {
    public int height=180;
    public int age=20;
    public void  show(){
        System.out.println(age);
        System.out.println(height);
    }
}


public class Demo {
    public static void main(String[] args) {
        Zi z=new Zi();
        z.show(); //输出为20、180
    }
}
public class Fu {
    public int age=30;
}


public class Zi extends Fu {
    public int height=180;
    public int age=20;
    public void  show(){
        int age=40;
        System.out.println(age);
        System.out.println(height);
    }
}


public class Demo {
    public static void main(String[] args) {
        Zi z=new Zi();
        z.show(); //输出为40、180
    }
}

6. super关键字

关键字访问成员变量访问构造方法访问成员方法
thisthis.成员变量,访问本类成员变量this(…),访问本类构造方法this.成员方法(…),访问本类成员方法
supersuper.成员变量,访问父类成员变量super(…),访问父类构造方法super.成员方法(…),访问父类成员方法
public class Fu {
    public int age=20;
}


public class Zi extends Fu {
    public int age=30;
    public void  show(){
        int age=40;
        System.out.println(age);       //40
        System.out.println(this.age);  //30
        System.out.println(super.age); //20
    }
}


public class Demo {
    public static void main(String[] args) {
        Zi z=new Zi();
        z.show();
        //输出结果为40、30、20
    }
}

7. 继承中构造方法访问特点

 1. 子类中所有的构造方法默认都会访问父类中无参的构造方法。

  • 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
  • 每一个子类构造方法的第一条语句默认都是:super()

 2. 如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?(此时super()不起作用)

  • 通过使用super关键字去显示地调用父类的带参构造方法。
  • 在父类中自己提供一个无参构造方法。
public class Fu {
    public Fu(){
        System.out.println("Fu类中无参方法调用");
    }
    public Fu(int age){
        System.out.println("Fu类中带参方法调用");
    }
}

public class Zi extends Fu {
    public Zi(){
        System.out.println("Zi类中无参方法调用");
    }
    public Zi(int age){
        System.out.println("Zi类中带参方法调用");
    }
}

public class Demo {
    public static void main(String[] args) {
        Zi z1=new Zi();

        Zi z2=new Zi(20);
    }
}

在这里插入图片描述

public class Zi extends Fu {
    public Zi(){
        //super()
        super(20);
        System.out.println("Zi类中无参方法调用");
    }
    //super()
    public Zi(int age){
        //super()
        super(20);
        System.out.println("Zi类中带参方法调用");
    }
}

在这里插入图片描述

8. 继承中成员方法访问特点

 继承中通过子类访问一个方法,顺序为:

  • 先在子类成员范围找。
  • 再在父类成员范围找。
  • 如果都没有就报错。
public class Fu {
    public void show(){
        System.out.println("Fu类中show方法调用");
    }
}

public class Zi extends Fu {
    public void method() {
        System.out.println("Zi类中method方法调用");
    }
    public void show(){
        super.show();
        System.out.println("Zi类中show方法调用");
    }
}

public class Demo {
    public static void main(String[] args) {
        Zi z=new Zi();
        z.method();
        z.show();
    }
}

在这里插入图片描述

9. 方法重写

 1. 方法重写概述:子类中出现了和父类中一模一样的方法声明。

 2. 方法重写应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,既沿袭了父类的功能,又定义了子类特有的内容。

 3. @Override:是一个注解,可以帮助我们检查重写方法的方法声明的正确性。

public class Phone {
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
}

public class NewPhone extends Phone{
    @Override
    public void call(String name) {
        System.out.println("先开启视频");
        super.call(name);
    }
}

public class Demo {
    public static void main(String[] args) {
        Phone ph=new Phone();
        ph.call("张三"); //注意加双引号
        System.out.println("--------");
        NewPhone p=new NewPhone();
        p.call("张三");  //注意加双引号
    }
}

在这里插入图片描述

10. 方法重写注意事项

 父类中的私有方法不能被重写(父类的私有成员子类是不能继承的)。子类方法的访问权限不能更低(public>默认>私有)。

11. Java继承注意事项

 Java中类只支持单继承,不支持多继承。Java中类支持多层继承。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

ILSVRC2012数据集处理

ILSVRC2012数据集处理 解压图像处理标签和图像 解压图像 先解压 tar -xvf ILSVRC2012_img_train.tar 解压之后其实还是1000个tar压缩包(对应1000个类别),需要再次解压,解压脚本unzip.sh如下(PS:可能需要自…

银行合规知识竞赛要怎么策划才高大上

合规是银行业务永恒的主题,也是银行发展的根本保障。加强合规知识的学习和理解是保障银行业务健康发展的基础。通过竞赛形式的开展,旨在增强员工对风险和合规的敏感度和关注度,推动全行合规水平全面提升。那么如何策划一场高水平的银行合规知…

开发环境配置整理大全——Visual Studio 最新安装篇

Visual Studio是微软的集成开发环境(IDE),以Windows为主的平台开发的一套功能全面而强大的IDE,支持C#、F#、VB、C/C、HTML等36 种语言的开发。开发人员常使用的开发工具之一,Visual Studio今年4月出了最新版本的2022款…

Ubuntu系统CLion安装

Ubuntu系统CLion安装 pycharm 同理。 参考官网安装过程:官网安装过程 下载linux tar.gz包 # 解压 sudo tar -xzvf CLion-*.tar.gz -C /opt/ sh /opt/clion-*/bin/clion.sh其中第二个命令是启动CLion命令 clion安装完以后,不会在桌面或者菜单栏建立图…

数学公式KaTex识别神器,LaTex-OCR

使用KaTex格式来书写数学公式是个痛苦的事情,有时候看到某个数学公式想记录下来,为了省事不得不截图,但这很不专业,今天发现一个可以智能识别公式的程序,它使用机器学习模型来识别图像,并转化成KaTex代码&a…

vmware虚拟机怎么安装linux-rocky操作系统

vmware虚拟机安装linux-rocky操作系统 rocky下载地址:https://rockylinux.org/zh_CN/download/ 我下载boot版本,安装时候需要联网。 接下来一路下一步,硬盘这里可以选择“将虚拟磁盘存储为单个文件”,然后一直点击到完成就可以。…

【C 语言经典100例】C 练习实例9

题目&#xff1a;要求输出国际象棋棋盘。 程序分析&#xff1a;国际象棋棋盘由64个黑白相间的格子组成&#xff0c;分为8行*8列。用i控制行&#xff0c;j来控制列&#xff0c;根据ij的和的变化来控制输出黑方格&#xff0c;还是白方格。 #include<stdio.h>int main() {…

《社交泛娱乐出海作战地图》加印领取啦!

全网都在找的、内容扎实形制精炼的行业首款 融云《社交泛娱乐出海作战地图》 响应需求&#xff0c;惊喜加印啦&#xff01; 久等的大家点击上图或阅读原文获取吧~ 关注【融云全球互联网通信云】了解更多 发布以来&#xff0c;《地图》两次加印均被抢购一空。 公众号后台、朋友…

SAP SM30及ABAP维护ADRC中央地址主数据(BAS)

文章背景&#xff1a; 项目组员在创建SM30的时候&#xff0c;发现了下图的报错&#xff0c;原因是因为自建表中的地址编号ADRNR字段使用了标准的数据元素AD_ADDRNUM&#xff0c;当使用包含该数据元素的视图在SM30进行维护时&#xff0c;就会出现下面的报错AM287。 后续了解到&…

python操作Mysql学习

文章目录 版权声明准备&#xff1a;MYSQL数据库数据库简介数据库分类数据库管理系统SQL语句关系型数据库中核心元素MySQL环境搭建Mysql数据类型数据完整性和约束MYSql基本操作登录和退出数据库命令数据库基本操作命令数据表基本操作命令数据表结构修改命令表数据操作命令Mysql查…

Programming Abstractions in C阅读笔记:p197-p201

《Programming Abstractions in C》学习第64天&#xff0c;p196-p201总结。 一、技术总结 很难&#xff0c;唯有继续往下看才能让其变容易。 二、英语总结 1.psychologically是什么意思&#xff1f; 答&#xff1a; (1))psychology > psychological > psychologica…

filebeat日志收集工具

elk:filebeat日志收集工具和logstash相同 filebeat是一个轻量级的日志收集工具&#xff0c;所使用的系统资源比logstash部署和启动时使用的资源要小得多 filebeat可以运行在非Java环境&#xff0c;它可以代理logstash在非Java环境上收集日志 filebeat无法实现数据的过滤&…

Spring Security 6.x 系列(6)—— 显式设置和修改登录态信息

一、前言 此篇是对上篇 Spring Security 6.x 系列&#xff08;5&#xff09;—— Servlet 认证体系结构介绍 中4.9章节显式调用SecurityContextRepository#saveContext进行详解分析。 二、设置和修改登录态 2.1 登录态存储形式 使用Spring Security框架&#xff0c;认证成功…

Django回顾【一】

一、Web应用程序 Web应用程序是一种可以通过Web访问的应用程序&#xff0c;程序的最大好处是用户很容易访问应用程序&#xff0c;用户只需要有浏览器即可&#xff0c;不需要再安装其他软件。应用程序有两种模式C/S、B/S。 C/S&#xff1a;客户端<----->服务端 例如My…

第二十章,多线程

创建线程 有两种方式&#xff0c;分别为继承Java.lang.Thread类与实现Java.lang.Runnable接口 继承Thread类 Thread常用的两个构造方法语法 public Thread&#xff08;&#xff09;&#xff1b; public Thread&#xff08;String threadName&#xff09;&#xff1b; 继承…

揭秘Java三宝:final,static,volatile,面试中不可不知的关键字秘籍!

大家好&#xff0c;我是小米&#xff0c;一名热爱技术分享的程序员。最近在和小伙伴们聊天时&#xff0c;发现有不少小伙伴对于Java中的一些关键字&#xff0c;比如final&#xff0c;static&#xff0c;volatile等&#xff0c;还是感到有些懵懂。为了帮助大家更好地理解这些概念…

企业如何选择安全又快速的大文件传输平台

在现代信息化社会&#xff0c;数据已经成为各个行业的重要资源&#xff0c;而数据的传输和交换则是数据价值的体现。在很多场合&#xff0c;企业需要传输或接收大文件&#xff0c;例如设计图纸、视频素材、软件开发包、数据库备份等。这些文件的大小通常在几百兆字节到几十个字…

HashMap的实现原理

1.HashMap实现原理 HashMap的数据结构&#xff1a; *底层使用hash表数据结构&#xff0c;即数组链表红黑树 当我们往HashMap中put元素时&#xff0c;利用key的hashCode重新hash计算出当前对象的元素在数组中的下标 存储时&#xff0c;如果出现hash值相同的key&#xff0c;此时…

HarmonyOS-Service服务开发(一)

文章目录 创建新项目启动Serviceets获取service的bundleName DataAbility开发指导开发Data步骤创建Data 创建新项目 ServiceAbility开发指导 在config.json中也有配置出现 启动Service ets获取service的bundleName 项目的bundleName service的bundleName 这里serviceAbil…

模板上新|2023年10月DataEase模板市场上新动态

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场&#xff08;https://dataease.io/templates/&#xff09;。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板&#xff0c;方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&#xff0c;并…