首页 > 编程语言 >《深入理解 Java 中的 super 关键字》

《深入理解 Java 中的 super 关键字》

时间:2024-09-12 22:53:16浏览次数:12  
标签:调用 Java 形参 子类 构造 关键字 父类 super

目录

一、为什么需要super?

二、super的理解及可调用结构

(一)super是对父类的引用

(二)super调用构造器

三、子类对象实例化全过程


一、为什么需要super

子类继承父类以后,可能会对父类的方法进行重写。在这种情况下,有时候我们需要在子类中调用父类中被重写的方法。此外,如果子类和父类中定义了同名的属性,我们也需要一种方式在子类中区分这两个同名的属性。而super关键字就是解决这些问题的关键。

二、super的理解及可调用结构

(一)super是对父类的引用

  1. super可以调用的结构包括属性、方法和构造器。
  2. 在子类的方法或构造器中,可以使用super.的结构来调用父类中声明的属性或方法,但要满足封装性的前提。一般情况下可以省略super.,但当子类重写了父类的方法或子父类出现同名属性时,必须使用super.来显示调用父类被重写的方法或父类中声明的同名属性。

(二)super调用构造器

  1. 子类继承父类时,不会继承父类的构造器,只能通过super(形参列表)的方式调用父类指定的构造器。并且规定super(形参列表)必须声明在构造器的首行。
  2. 在构造器的首行可以使用this(形参列表)调用本类中的重载构造器,但thissuper只能二选一。
  3. 如果在子类构造器的首行既没有显示调用this(形参列表)也没有显示调用super(形参列表),则子类此构造器默认调用super(),即调用父类中空参的构造器。
  4. 子类的任何一个构造器,要么会调用本类中重载的构造器,要么会调用父类的构造器。如果有 N 个构造器,那么最多有 N - 1 个使用了this(形参列表),剩下的一个一定使用super(形参列表)

三、子类对象实例化全过程

以生物类Creature、动物类Animal和狗类Dog为例:

class Creature{//生物类
    //声明属性,方法,构造器
}
class Animal extends Creature{
    
}
class Dog extends Animal{//狗类

}
class DogTest{
    public static void main(String[] args){
        Dog dog = new Dog();    
    }
}
  1. 从结果上看:体现为类的继承性。当我们创建子类对象后,子类对象就获取了其父类中声明的所有的属性和方法,在权限允许的情况下,可以直接调用。例如dog就可以直接调用父亲的属性和方法。
  2. 从过程角度看:当我们通过子类的构造器创建对象时,子类的构造器一定直接的或间接的调用到父类的构造器,而其父类的构造器同样也会直接或间接的调用到其父类的父类的构造器…… 直接调用到Object类中的构造器。正因为我们调用过子类所有的父类的构造器,所以我们会将父类中声明的属性、方法加载到内存中,供子类的对象使用。

标签:调用,Java,形参,子类,构造,关键字,父类,super
From: https://blog.csdn.net/qq_69304031/article/details/142187854

相关文章

  • 【Java】—— Java面向对象高级:抽象类与抽象方法(或abstract关键字)
    目录6.抽象类与抽象方法(或abstract关键字)6.1由来6.2语法格式6.3使用说明6.4注意事项练习:工资系统设计(1)MyDate类包含:(2)定义一个Employee类,该类包含:(3)定义SalariedEmployee类继承Employee类,(4)参照SalariedEmployee类定义HourlyEmployee类,(5)定义PayrollSystem类,......
  • JAVA基础知识
    JAVA版本(Oracle甲骨文)标准版(JZSE)微缩版(JZME)企业版(JZEE)JAVA特性跨平台、安全、简单、面向对象(封装、继承、多态)、动态特性、分布式JDK(JAVA开发工具)---JRE(JAVA运行环境)---JVE(JAVA虚拟机)JVM是可运行java字节码的假想计算机基于下层操作系统和硬件平台功能:执行代码、管理内......
  • Java面试笔记记录6
    1.Spring是什么?特性?有哪些模块?Spring是一个轻量级、非入侵式的控制反转Ioc和面向切面AOP的框架。特性:1.Ioc和DISpring的核心就是一个大的工厂容器,可以维护所有对象的创建和依赖关系,Spring工厂用于生成Bean,并且管理Bean的生命周期,实现高内聚低耦合的设计理念。2.AOP编程Sp......
  • JavaScript语法入门五 常量
    常量声明一个常量就是声明一个常数。声明之后就不能修改(不能通过重新赋值进行修改)。使用const关键字。该关键字是ES6新增加的关键字。用const声明常量时,必须初始化。例子1:constmyBirthday='18.06.1981';例子2:<script> constPERSON='jack' {   constPERSON='tom' ......
  • JavaWeb
    课程学习路线,重点在后端。学习可以掌握能力Web工作流程,不同的浏览器,内核不同,对于相同的前端代码解析的效果会存在差异。Web标准HTML:负责网页的结构。CSS:负责网页的表现。JS:负责网页的行为。HTML、CSS快速入门在文件夹中新建一个后缀为html的文本文件,输入以下代码,就能在浏览器打开......
  • java方法:什么是方法?
    java方法是语句的集合,它们在一起执行一个功能:方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用例如:即______()是方法设计方法的原则:方法的本意时功能块,就是实现某个功能块,就是实现某个功能的语句块的集合,所以最好保持方法的......
  • 基于java+ssm+vue的大学生社团活动管理微信小程序
    项目介绍随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于大学生社团活动管理的微信小程序的开发全过程。通过分析大学生社团活动管理的不足,创建了一个计算机管理基于大学生社团活动管理的微信小程序的方案。文章介绍了基......
  • 基于java+springboot+vue的校园失物招领系统
    ......
  • 关于java学习基础路线的分享【javaSE】
    成长路上不孤单......
  • java学习第一天
    java定义指针ctrl+a全选classhellword(//class 定义一个类名,类名和文件名可以不一样//写了多少个class类,就有多少个class文件 publicstaticvoidmain(string[]args){ System.out.println("hello,world")})​```编译刷时候要有后缀名```classdemo{ publ......