关于java继承知识点总结

目录

继承

概念

代码格式

为什么要继承

继承类型

extends

implements 

子类与父类 

性质

final关键字:

super关键字:引用子类的父类。

this关键字:指向类自己的引用。

构造器

概念

 子类与父类的构造器

看父类

子类中


继承

概念

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的属性

从已有的类派生出新的类,称为继承。

代码格式

class 父类 {
}class 子类 extends 父类 {
}

为什么要继承

在不同类中会有共同的属性或者方法,我们可以将这些共同的属性和方法放在同一个父类,然后再派生出其他子类来共享。

继承实现软件重用的重要手段,避免重复,易于维护,易于理解。

继承类型

java不支持一继承多,但支持多重继承。

即一个子类不能同时继承多个父类,但是可以一层一层继承。

(C++支持多重继承)

extends

使用extends关键字可以让一个子类继承一个父类。格式为

class 父类 {
}class 子类 extends 父类 {
}
implements 

 使用 implements 关键字可以变相地让一个类多继承,但使用情况是类继承接口,格式为

public interface A {
}public interface B {
}public class C implements A,B {
}

注:接口的声明用interface 。

子类与父类 

性质

  1. 子类拥有父类非 private 的属性、方法。                      

    即子类不能直接继承父类中的 private 属性和方法,需要通过有参构造函数进行继承。
  2. 子类可以书写自己的属性和方法,即子类可以对父类进行扩展

    这两点可以概括为子类从它的父类中继承可访问的数据域和方法,也可以添加新的数据域和新的方法。
  3. 子类可以对父类的方法进行重写,但重写的父类方法要求不能被final修饰

  4. 父类必须要声明一个默认的构造函数。

    public 父类名(){}
  5. final关键字:

    1. final 修饰类中的属性或者变量无论属性是基本类型还是引用类型,                            

      作用:变量里面存放的"值"不能变。

    2. final修饰类中的方法

      作用:可以被继承,但继承后不能被重写

    3. final修饰类

      作用:类不可以被继承。

  6. super关键字引用子类的父类。

    //构造方法
    super();
    //或
    super(参数列表);
    //-----
    //调用父类的方法语法
    super.方法名(参数列表)
    1. 调用父类的构造方法。
    2. 调用父类的方法(函数)。
    3. 访问父类的数据域(可以这样用但没必要这样用)。
    4. 注:super语句必须是子类构造方法中的第一条语句。
    5. 静态方法不能使用super关键字。
  7. this关键字:指向类自己的引用。

构造器

概念

  1. 用来初始化对象的新实例
  2. 构造器与类同名,且没有返回类型,可以有参数。(参数为类的变量)
  3. 在Java中,如果没有显式地定义构造器,编译器会自动提供一个无参数的默认构造器。       父类必须要声明一个默认的构造函数。

 子类与父类的构造器

子类是不继承父类的构造器的,它只是调用(隐式或显式)。

看父类

如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。如

子类名() {super(参数列表);
}

如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。如

子类名() {}

子类中

  • 子类的所有构造方法内部, 第一行会(隐式)自动先调用父类的无参构造函数super()
  • 如果子类构造方法第一行显式调用了父类构造方法,系统就不再调用无参的super()了

在编写代码要注意:

  •  1.如果父类中不含 默认构造函数(就是 类名() ),那么子类中的super()语句就会执行失败,系统就会报错。一般 默认构造函数 编译时会自动添加,但如果类中已经有一个构造函数时,就不会添加。
  •  2.执行父类构造函数的语句只能放在函数内语句的首句,不然会报错。

 本文大部分知识点都来自菜鸟教程https://www.runoob.com/java/java-inheritance.html

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

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

相关文章

Linux - No space left on device

问题描述 No space left on device 原因分析 说明在服务器设备上的存储空间已经满了,不能再上传或者新建文件夹或者文件等。 解决方案 确认查看服务器系统的磁盘使用情况是否是真的已经没有剩余空间,复制下面命令在服务器上运行,然后发现如果…

Edge浏览器入门

关于作者: CSDN内容合伙人、技术专家, 从零开始做日活千万级APP,带领团队单日营收超千万。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业化变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览…

泊松流生成模型简介

一、说明 泊松流生成模型 (PFGM) 是一种新型的生成深度学习模型,与扩散模型类似,其灵感来自物理学。在这本简单易懂的指南中了解 PFGM 背后的理论以及如何使用它们生成图像。 生成式人工智能模型在过去几年中取得了长足的进步。受物理启发的扩散…

Ubuntu 22.0.4 忘记重置 MySQL 密码

Ubuntu 22.0.4 忘记重置 MySQL 密码 一、问题描述二、解决办法 一、问题描述 Ubuntu 22.0.4 忘记了 MySQL的密码,需要重新设置密码 环境描述: 系统:Ubuntu 22.0.4 MySQL:8.0.35 (通过 apt install mysql-sever 安装的…

day18【LeetCode力扣】19.删除链表的倒数第N个结点

day18【LeetCode力扣】19.删除链表的倒数第N个结点 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入&a…

What is `addArgumentResolvers` does in `WebMvcConfigurer` ?

addArgumentResolvers 在SpringMVC框架中,主要用于向Spring容器注册自定义的参数解析器。在处理HTTP请求时,SpringMVC会使用这些参数解析器将请求中的数据(如查询参数、路径变量、表单数据等)转换并注入到控制器方法的参数中。 使…

Java 中 IO 流的分类

Java 中的 I/O(输入/输出)流是处理输入和输出的机制。在 Java 中,I/O 流主要分为两大类:字节流和字符流。每个类别又分为输入流和输出流。这两大类流都是用于在程序和外部源(文件、网络、内存等)之间传输数…

一、Mindspore 公开课 - Transformer

课程链接:Mindspore 技术公开课 Transformer 论文地址,建议看完课程以后简单看看论文 前言 Transformer是一种神经网络结构,由Vaswani等人在2017年的论文“Attention Is All You Need” 中提出,用于处理机器翻译、语言建模和文…

element表格数据,表头上(下)角标,html字符串渲染

1. 问题描述 在动态渲染的element表格中&#xff0c;表头和表中数据是一个含有html的字符串&#xff0c;需要渲染 2. 效果 3. 代码 const columns ref([{ text: 差值<sub>-3</sub> / 10<sup>-6</sup>℃<sup>-1</sup>, value: aallowEr…

Docker运行RabbitMQ并使用SpringAMQP操作

文章目录 一、RabbitMQ运行二、整合SpringAMQP1. 引入依赖 三、测试1. 消费者2. 生产者3. 运行 一、RabbitMQ运行 拉取docker镜像 docker pull rabbitmq:3-management基础运行命令 docker run \-e RABBITMQ_DEFAULT_USERrabbitmq \-e RABBITMQ_DEFAULT_PASSrabbitmq \--name…

Velodyne 64E S3 硬件连接和 velodyne_driver ROS驱动安装

在当前的研究工作中&#xff0c;点云语义分割技术的应用显得尤为重要&#xff0c;而我选择了rangenet作为分割算法的核心。尽管课题组拥有一款80线激光雷达&#xff0c;但是在实际测试中&#xff0c;我们发现该算法模型在我们的数据集上的泛化表现并不理想。为了改善这一情况&a…

GRE隧道(初级VPN)配置步骤

一、拓朴图&#xff1a; 二、配置步骤&#xff1a; 1、配置IP 2、R1、R2 配置nat&#xff0c;代理内网地址通过G0/0/0口上外网 acl 2000rule permit source anyquit # int G0/0/0ip addr 100.1.1.1 24nat outbound 2000 # 3、R1、R2 配置默认出口路由G0/0/0&#xff0c;这一…

dockerfile文件详解

dockerfile Dockerfile是一种用于构建Docker镜像的文件&#xff0c;它包含一系列的指令&#xff0c;用于描述如何构建镜像。 dockerfile示例 # 指定基础镜像 FROM harbor.zhianoa.com/phoenix/ubuntu-python:3.7 # 镜像中创建/app目录&#xff0c;这一步可提前在基础镜像中创…

java+ssm+vue代码视频学习讲解

一、ssm 1.项目文件结构 2.数据库连接信息 3.其他配置信息 4.java代码文件目录介绍 5.entity层代码 6.controller&#xff0c;service&#xff0c;dao&#xff0c;entity层之间的关系 7.controller层代码 8.登陆拦截功能实现 AuthorizationInterceptor.java 9.文件上传功能 …

【笔记------coremark】单片机上的跑分库coremark移植

coremark的官方仓库&#xff1a;https://github.com/eembc/coremark 官方收录了很多单片机的跑分情况&#xff1a;https://www.eembc.org/coremark/scores.php 这个是我建立的一个仓库&#xff0c;用来收集自己用到的一些单片机的跑分情况&#xff1a;https://gitee.com/wild_c…

单容水箱液位定值控制实验

实验1 单容水箱液位定值控制实验 一、实验目的 1、通过实验熟悉单回路反馈控制系统的组成和工作原理。 2、分析分别用P、PI和PID调节时的过程图形曲线。 3、定性地研究P、PI和PID调节器的参数对系统性能的影响。 二、实验设备 A3000现场系统&#xff0c;任何一个控制系统…

C++标准库vector的基础用法总结

C标准库vector的基础用法总结 文章目录 C标准库vector的基础用法总结vector简介简单应用push操作pop操作删除末尾删除开头 参数传递 vector简介 vector是C标准模板库(STL)中的一个动态数组模板类&#xff0c;它可以随着元素的添加而自动增长。vector使用连续的内存空间来存储元…

蓝桥杯单片机省赛真题

文章目录 第八届蓝桥杯省赛真题及参考代码 链接&#xff1a;https://pan.baidu.com/s/1JQ68qvrU3cYLVaQbD1KSiA?pwd1111 第九届蓝桥杯省赛真题及参考代码 链接&#xff1a;https://pan.baidu.com/s/1LM_JALrsKsthnWxTtgE1Fw?pwd1111 第十届蓝桥杯省赛真题及参考代码 链接&…

[AutoSar]基础部分 RTE 08 runnable mapping

目录 关键词平台说明一、runnable mapping的必要性二、runnable mapping 通用规则三、Task type四、可以不用mapping的runnbale 关键词 嵌入式、C语言、autosar、runnable 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (…

手撕乘积(**Multiplication** **Product**): 穷举和图示(1)

手撕乘积(Multiplication & Product): 穷举和图示(1) 乘积 r ⋅ s ∑ i 1 s r r r ⋯ r ⏟ s times ∑ j 1 r s s s ⋯ s ⏟ r times r\cdot s\sum _{i1}^{s}r\underbrace {rr\cdots r} _{s{\text{ times}}}\sum _{j1}^{r}s\underbrace {ss\cdots s} _{r{\tex…