继承(extends)

继承[extends]

  • 继承的好处
  • 继承的示意图
  • 继承的使用细节
  • JVM的内存:继承的内存布局

继承的好处

 
    1)提高代码的复用性
    2)代码的扩展性和维护性提高了

继承的示意图

 
在这里插入图片描述

继承的使用细节

 
    1)子类继承了所有属性和方法,非私有的属性和方法可以在子类直接访问;但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问;

    2)子类必须调用父类的构造器,完成父类的初始化;

    3)当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器;

          如果父类没有提供无参构造器,则必须在子类的构造器中用 super( ) 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过;

    4)如果希望指定去调用父类的某个构造器,则显式调用一下 super(参数列表)

    5)super( ) 在使用时,必须放在构造器第一行;

    6)super( )this( ) 都只能放在构造器第一行,因此这两个方法不能共存一个构造器;

    7)java 所有类都是 Object 类的子类,Object 类是所有类的基类;
    在这里插入图片描述

    8)父类构造器的调用不限于直接父类!将一直往上追溯直到 Object 类(顶级父类);

    9)子类最多只能继承一个父类(指直接继承),即 java 中是单继承机制
          如何让 A类继承B类C类?【A 继承 B,B 继承 C】

    10)不能滥用继承,子类和父类之间必须满足 is-a 的逻辑关系。

// Music is a Person?
Music extends Persons;	// 不合理// Cat is a Animal?
Cat extends Animal;	// 合理

JVM的内存:继承的内存布局

在这里插入图片描述

/*** 继承的本质*/
public class ExtendsTheory {public static void main(String[] args) {Son son = new Son();// 要按照查找关系来返回信息// 1) 首先看子类是否有该属性// 2) 如果子类有这个属性,并且可以访问,则返回信息// 3) 如果子类没有这个属性,就看父类有没有这个属性 (如果父类有该属性,并且可以访问,就返回信息...)// 4) 如果父类没有就按照 3) 的规则,继续找上级父类,直到 Object...System.out.println(son.name);   // 返回的是 大头儿子System.out.println(son.age);    // 返回的是 39System.out.println(son.hobby);  // 返回的是 旅游}
}class Grandpa{String name = "大头爷爷";String hobby = "旅游";
}class Father extends Grandpa{String name = "小头爸爸";int age = 39;// private int age = 39;    此时 son.age 不能访问该数据并报错// 但是可以通过父类提供 getAge() 方法来访问 age
}class Son extends Father{String name = "大头儿子";
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud部署篇1——Jar包部署至CentOS云服务器

一、项目介绍 系统模块 com.mingink |--mingink-api // 接口模块 | └──mingink-api-system // 系统接口 |--mingink-common // 通用模块 | └──mingink-common-core // 系统接口 |--mingink-gateway…

1.系统调用接口

1. 系统调用接口 1.1 Linux系统调用概念 系统调用(systemcall): 所有的操作系统在内核里都有一些内建的函数,这些函数完成对硬件的访问和对文件的打开、读、写、关闭等操作。 Linux 系统中称这些函数为系统调用。这些函数实现了…

SpringMVC 学习(二)之第一个 SpringMVC 案例

目录 1 通过 Maven 创建一个 JavaWeb 工程 2 配置 web.xml 文件 3 创建 SpringMVC 配置文件 spring-mvc.xml 4 创建控制器 HelloController 5 创建视图 index.jsp 和 success.jsp 6 运行过程 7 参考文档 1 通过 Maven 创建一个 JavaWeb 工程 可以参考以下博文&#x…

Python isinstance函数

在Python编程中,isinstance()函数是一个常用的内置函数之一。它用于检查一个对象是否是某个类(或者某个类的子类)的实例。这个函数非常有用,可以在编写代码时进行类型检查,确保代码的健壮性和可靠性。本文将深入探讨Py…

无人机竞赛常用目标检测方法--色块检测

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接:https://github.com/zzhmx/Using-color-gamut-limitations-such-as-HSV-and-RGB-for-object-detection.git 主要使用传统算法,如果想要使用进阶版机器学习算法,请…

【动态规划】【前缀和】【推荐】2463. 最小移动总距离

作者推荐 【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子 本文涉及知识点 动态规划汇总 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 2463. 最小移动总距离 X 轴上有一些机器人和工厂。给你一个整数数组 robot &#xff0c…

2001~2023年中国MOD17A3HGF NPP数据

各位同学们好&#xff0c;今天和大伙儿分享的是2001~2023年中国MOD17A3HGF NPP数据。如果大家有下载处理数据等方面的问题&#xff0c;请私信或评论。 Running, S., M. Zhao. <i>MODIS/Terra Net Primary Production Gap-Filled Yearly L4 Global 500m SIN Grid V061<…

算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习四(leetcode真题剖析)

算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习四 01.解数独02.单词搜索03.黄金矿工04.不同路径 III 01.解数独 题目链接&#xff1a;https://leetcode.cn/problems/sudoku-solver/ 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&am…

springboot+vue网站开发02-前端页面的渲染代码展示

springbootvue网站开发02-前端页面的渲染代码展示&#xff01;经过上面2个小节的分享&#xff0c;我们已经准备好了前端渲染所需要的数据接口了。可以给大家正常返回新闻分类的信息了。 下面给大家看看&#xff0c;前端vue网站开发的代码&#xff0c;已经渲染的业务流程是什么。…

C++ Primer Plus 笔记(持续更新)

编译器的正解 数据&#xff0b;算法程序 赋值从右向左进行 cin&#xff0c;cout的本质也是对象 类和对象的解释

通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试,发布到CSDN

效果图 设备树代码 myplatform{compatible "hqyj,myplatform";led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>; interrupt-parent <&gpiof>;interrupts<9 0>;reg<0X12345678 …

Linux入门攻坚——15、进程和作业管理

一个完整的计算机系统&#xff1a;静态 最底层是硬件&#xff0c;硬件之上是操作系统&#xff0c;也叫内核&#xff08;即kernel&#xff09;&#xff0c;操作系统提供的是系统调用&#xff0c;在内核之上&#xff0c;是各种库&#xff0c;提供库函数&#xff0c;在此之上是各种…