继 承

news2024/9/20 22:43:25

为什么要有继承,继承的作用?

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。

作用:进行共性抽取,实现代码的复用

//代码一
public class Cat {
    public String name;
    public int age;

    public void meow(){
        System.out.println(this.name + "喵喵叫");
    }
}
//代码二
public class Dog {
    public String name;
    public int age;

    public void bark(){
        System.out.println(this.name + "汪汪叫");
    }
}

对上述代码一和代码二,我们不难发现他们有着共同字段 name 和 age,因此可以将两段代码的共性抽取出来,放到Animal类中,如下

public class Animal {
    public String name;
    public int age;
}

这样就将共性抽取了出来,如果以后还有别的动物需定义一个类,就可以继承Animal类,从而达到代码的复用。那么怎么写继承呢?请看下文。

语法

表示类之间的继承关系,用 extends 关键字。

修饰符 class 子类/派生类 extends 父类/基类/超类{
}


//例
public class Animal {
    public String name;
    public int age;
}

public class Cat extends Animal{//将Animal类字段name和age继承过来且有自己的成员
    public void meow(){
        System.out.println(this.name + "喵喵叫");
    }
}
  1. 子类会将父类中的成员变量或成员方法继承到子类中
  2. 子类继承父类后,需添加自己特有的成员,体现出与父类不同,否则没必要继承

子类访问父类成员

  1. 子类访问父类成员变量
    当父类和子类拥有同名的成员变量时,优先访问子类成员变量,若要在子类中访问与父类同名的成员变量,则需借助super关键字==(super.成员变量)==
  2. 当父类和子类拥有同名成员方法时,优先访问子类成员方法,若要在子类中访问与父类同名的成员方法,则需借助super(super.成员方法

子类构造方法

子类对象构造时 ,需先调用基类构造方法,来帮助基类成员方法初始化,然后执行子类构造方法

public class Animal {
    public String name;
    public int age;

    public Animal(String name,int age){
        this.name = name;
        this.age = age;
    }
}

public class Dog extends Animal{

    public Dog(String name,int age){
        super(name,age);//用super(参数列表名)来调用父类构造方法,帮助父类成员进行初始化
        System.out.println("==构造方法执行==");

    }

    public void bark(){
        System.out.println(this.name + "汪汪叫");
    }
}

public class Test {

    public static void main(String[] args) {
        Dog dog = new Dog("dog",2);
    }
}

在这里插入图片描述

上述代码中,Dog类这个子类中调用了构造方法(子类构造方法),那么就需要先调用父类的构造方法(用super(参数列表)),也就是Animal类的构造方法来帮助Animal类的成员初始化,然后再继续执行子类构造方法,打印出构造方法执行。

注意:构造方法中 super(参数列表)或 this(方法名)都必须放在构造方法中的第一行,且不能在静态方法中使用

如果父类没有定义构造方法或者定义了无参的构造方法,那么子类构造方法第一行会有隐藏的super()调用(子类构造方法执行前会先调用父类的构造方法【用super()调用】,如果父类没有显示定义构造方法,则Java会提供默认的不带参数的构造方法)

代码块执行顺序

  1. 静态代码块先执行且只执行一次,在类加载阶段执行
  2. 当有对象创建时,执行实例代码块,后执行构造方法

当有父类和子类时,先执行父类和子类的静态代码块,再执行父类的实例代码块和构造方法,再执行子类的实例代码块和构造方法,且如果是第二次实例化子类对象时,父类和子类的静态代码块不会再执行(静态代码块只执行一次)

//父类
public class Father {
    public String name;
    public int age;

    static {
        System.out.println("父类静态代码块");
    }

    {
        System.out.println("父类实例代码块");
    }

    public Father(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("父类构造方法");
    }
}

//子类
public class Son extends Father{

    static {
        System.out.println("子类静态代码块");
    }

    {
        System.out.println("子类实例代码块");
    }

    public Son(String name,int age){
        super(name,age);
        System.out.println("子类构造方法");
    }
}

//测试类
public class Test {
    public static void main(String[] args) {
        Son son = new Son("dog",3);
        System.out.println("===========================");//分割线
        Son son2 = new Son("cat",2);
    }

}

在这里插入图片描述

有上述代码和运行结果可知上文所说的执行顺序以及静态代码块只执行一次

继承方式

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

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

相关文章

如何使用Python脚本实现SSH登录

调试IDE:PyCharm Python库:Paramiko 首先安装Paramiko包到PyCharm,具体步骤为:在打开的PyCharm工具中,选择顶部菜单栏中“File”下的“Settings”,在设置对话框中,选择“Project”下的“Proje…

三星强劲财报,Q2营业利润同比增长1452%!

KlipC报道:7月5日,全球最大的内存芯片和智能手机制造商三星电子公布了初步的第二季度财报,其营业利润同比增长1452.24%,达到10.4万亿韩元(约合人民币548亿元),销售额74万亿韩元,同比…

shell脚本编程的练习

字符测试方法: 双目测试 比较两个字符串: :等于,等值比较 !:不等 单目测试: -n $stringVar:字符串是否为空,不空为真,空则为假 -z $stringVar:字符串是否为空,空则为…

新闻第一线|随身WiFi市场乱象与破局者:格行以品质重塑行业信任、随身WiFi行业标杆!

在快速发展的移动互联网时代,随身WiFi凭借用网方便性价比高也随之爆火。然而,近年来,随身WiFi市场却陷入了“内卷”与“信任危机”的双重困境,消费者在选择时往往面临质量问题。在此背景下,格行以其独特的品牌理念和扎…

html+css+js随机验证码

随机画入字符、线条 源代码在图片后面 点赞❤️关注&#x1f60d;收藏⭐️ 互粉必回 图示 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"…

Ai Native应用开发(一)--数字人

背景 刚参加完24年世界人工智能大会&#xff08;WAIC&#xff09;&#xff0c;聊聊自己的一些感受。这次会明显比去年多很多人&#xff0c;用人山人海来形容应该也不为过。根据我自己粗浅观察参会的人员也比去年更多样化。去年更多还是从业者或者是这块研究人员。今年每个论坛…

最新简约美观的网址网站引导页HTML源码

简介&#xff1a; 最新简约美观的网址网站引导页HTML源码 带一言 随机大图 图片&#xff1a;

边缘计算网关如何在实际应用中发挥作用-天拓四方

随着物联网技术的快速发展&#xff0c;物联网时代已经悄然来临。在这个时代&#xff0c;数以亿计的设备相互连接&#xff0c;共享数据&#xff0c;共同构建智慧的世界。边缘计算网关通过将计算能力和数据存储推向网络的边缘&#xff0c;实现了对海量数据的实时处理&#xff0c;…

虚拟现实3d场景漫游体验实现了“所见即所得”

如今&#xff0c;从实体店铺到工厂企业&#xff0c;再到政府单位&#xff0c;各行各业都已纷纷加入VR数字化升级的行列&#xff0c;相比传统的2D商品展示&#xff0c;三维交互展示成为商企客户交流的主流方式。产品展示、服务介绍、考察洽谈等都可以通过在3D虚拟场景网站中真实…

Joblib 是一个专注于高效计算和数据持久化的 Python 库

目录 01Joblib 是什么&#xff1f; 为什么选择 Joblib&#xff1f; 安装与配置 02Joblib 的基本用法 并行计算 数据持久化 03实战案例 项目简介 项目结构 依赖安装 应用代码 运行应用 …

忘年之恋也甜蜜:韩雪与实力大叔的双赢人生

韩雪&#xff0c;这位自带光环的“京城四美”之一&#xff0c; 美貌与才情并蓄&#xff0c;竟是娱乐圈中那股清流&#xff0c; 拒吻戏于千里之外&#xff0c;独树一帜。 本以为她的归宿会是位风度翩翩的高富帅&#xff0c;共谱童话恋曲。岂料&#xff0c;缘分妙不可言&#x…

动手学深度学习6.2 图像卷积-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;卷积层_哔哩哔哩_bilibili 代码_哔哩哔哩_bilibili 本节教材地址&#xff1a;6.2. 图像卷积 — 动…

【CSS01】CSS概述,使用样式的必要性,CSS语法及选择器

文章目录 一、什么是样式二、使用样式的必要性三、使用样式的几种方式四、CSS基本语法&#xff1a;五、CSS的注释六、CSS选择器——重点相关单词 一、什么是样式 概念&#xff1a; Cascade [kˈskeɪd] Style Sheet [ʃiːt] 级联样式单/表&#xff0c;层叠样式表 CSS有化腐…

使用C++实现ATM系统,谈谈思路及代码实现

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

权限维持-Linux-内核加载 LKM-Rootkit 后门

免责声明:本文仅做技术交流与学习... 目录 权限维持-Linux-内核加载 LKM-Rootkit 后门 项目地址: 安装: 隐藏用法: 将 root 权限授予非特权用户 隐藏文件、目录和内核模块 隐藏进程 隐藏 TCP 和 UDP 连接 高级玩法(c/s) 攻击机上(客户端)安装: 设置连接配置 权限维持…

代码随想录算法训练营第四十七天|1143.最长公共子序列、 1035.不相交的线、53. 最大子序和、392.判断子序列

1143.最长公共子序列 题目链接&#xff1a;1143.最长公共子序列 文档讲解&#xff1a;代码随想录 状态&#xff1a;一开始没想明白为啥要 max(dp[i - 1][j], dp[i][j - 1]) 思路&#xff1a; 如果text1[i - 1] 与 text2[j - 1]相同&#xff0c;那么找到了一个公共元素&#xff…

【c语言】玩转文件操作

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C语言 目录 引言 一、文件的打开和关闭 1.流 2.标准流 3.文本文件和二进制文件 4.控制文件打开与关闭的函数 二、文件的顺序读写 三、文件的随机读写 1…

收银系统源码-次卡功能

智慧新零售收银系统是一套线下线上一体化收银系统&#xff0c;给门店提供了含线下收银称重、线上商城、精细化会员管理、ERP进销存、营销活动、移动店务助手等一体化行业解决方案&#xff01; 详细功能见下文&#xff1a; 门店收银系统源码-CSDN博客文章浏览阅读2.6k次&#…

猫咪浮毛太多怎么处理?6年铲屎官最值得买的猫毛空气净化器分享

作为一位拥有6年铲屎经验的铲屎官&#xff0c;家中既有宝宝又有毛孩子的铲屎官家庭来说&#xff0c;空气中的宠物异味和猫毛不仅影响生活质量&#xff0c;更关乎家人的健康。普通空气净化器虽然能够提供基本的空气净化&#xff0c;但对于养猫家庭的特定需求&#xff0c;如去除宠…

PHP宝藏神器多功能投票系统源码小程序

&#x1f389;发现宝藏神器&#xff01;一键解锁“多功能投票小程序”的无限可能✨ &#x1f308; 开篇安利&#xff1a;告别繁琐&#xff0c;拥抱高效&#xff01; Hey小伙伴们&#xff0c;是不是经常为组织活动、收集意见而头疼不已&#xff1f;&#x1f92f; 今天就要给大…