java 继承里面的super关键词

super关键词

  • 一个引用变量,用于引用父类对象
  • 父类和子类都具有相同的命名属性,要调用父类中的属性时使用
  • super也是父类的构造函数,格式super(参数)
    • 注意点,调用super()必须是类构造函数中的第一个语句,否则编译不通过
  • 注意
    • 每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错
public class Father {
public Father(){
System.out.println("father ⽆参构造函数");
}
}
public class Children extends Father{
public Children(){
//默认存在,写和不写都⾏
super();
System.out.println("Child⽆参构造函数");
}
}
  • this()和super()都指的是对象,均不可以在static环境中使用

    • 包括:static变量,static方法,static代码块
  • 构造函数super和this
    • this和super在构造函数中只能有一个,且都必须是构造函数当中的第一行
    • 当父类的构造函数是无参构造函数时,在子类的构造函数中,不用显式super()去调用父类的构造函数
    • 当父类的构造函数是有参构造函数时,如果子类的构造函数中不写super()进行调用父类的构造函数,编译器会报错

Java继承后类的初始化顺序

  问题:静态代码块、非静态代码块、父类/子类无参构造函数、父类/子类的一般方法

class Teacher {
static {
System.out.println("Teacher 静态代码块");
}
public Teacher() {
System.out.println("Teacher 无参构造函数被执行");
}
public Teacher(int age) {
System.out.println("Teacher 有参构造函数被执行");
}
public void sleep() {
System.out.println("Teacher中的sleep被调用");
}
} public class Student extends Teacher{
static {
System.out.println("Student 静态代码块");
}
public Student() {
super();
System.out.println("Student 无参构造被执行");
super.sleep();
}
public void sleep() {
System.out.println("Student中的sleep被调用");
}
} public static void main(String[] args) {
new Student().sleep();
}

Java 面向对象编程之继承的super关键词的更多相关文章

  1. python基础-面向对象编程之继承

    面向对象编程之继承 继承的定义:是一种新建类的方式,新建的类称之为子类或派生类,被继承的父类称之为基类或超类 继承的作用:子类会""遗传"父类的属性,从而解决代码重用问题 ...

  2. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  3. Java学习笔记---继承和super的用法

    自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...

  4. java学习笔记-继承中super关键字

    背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...

  5. 9、scala面向对象编程之继承

    1.  extends 2.override 和super 3.override field 4.isInstanceOf和asInstanceOf 5.getClass和classOf 6.使用模式 ...

  6. Scala 面向对象编程之继承

    extends关键字 // Scala中,让子类继承父类,与Java一样,也是使用extends关键字 // 继承就代表,子类可以从父类继承父类的field和method:然后子类可以在自己内部放入父 ...

  7. Java: 类继承中 super关键字

    super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...

  8. java基础11 继承(super、extends关键字和重写,这三个要素出现的前提:必须存在继承关系)

    面向对象的三大特征: 1.封装   (将一类属性封装起来,并提供set()和get()方法给其他对象设置和获取值.或者是将一个运算方法封装起来,其他对象需要此种做运算时,给此对象调用) 2.继承   ...

  9. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

  10. Java面向对象编程之异常处理机制

    一:Java的异常处理机制的优点: 1:把各种不同情况的异常情况分类,使用JAVA类来表示异常情况,这种类被称为异常类.把各种异常情况表示成异常类,可以充分的发挥类的可扩展性和可重用性. 2:异常流程 ...

随机推荐

  1. FileInputStream和FileOutputStream

    FileInputstream 字节输入流 用于文件内容的读取操作. 创建FileInputstream对象用于读取文件内容,使用后需要进行关闭操作 常用方法: read(); //每次仅读取一个字节 ...

  2. postgresql性能优化1:min和max的性能

    select max(datatime) as id from mytable ---全表检索,时间慢执行时间5分钟 select max(datatime) as id from mytable w ...

  3. AI回答总不满意?你的提问方式可能完全错误!

    AI回答总不满意?你的提问方式可能完全错误! 大家好,我是卷福同学,一个专注AI大模型整活的前阿里程序员,腾讯云社区2023新秀突破作者 向AI提问想写一篇论文,结果AI就生成2000字左右的文章后就 ...

  4. 分享一个Objectarx 的凸包算法

    #include "stdafx.h" #include "MyTuBao.h" #include"MathUtil.h" MyTuBao: ...

  5. aspnetcore插件开发dll热加载 二

    这一篇文章应该是个总结. 投简历的时候是不是有人问我有没有abp的开发经历,汗颜! 在各位大神的尝试及自己的总结下,还是实现了业务和主机服务分离,通过dll动态的加载卸载,控制器动态的删除添加. 项目 ...

  6. Swoole 源码分析之 Http Server 模块

    首发原文链接:Swoole 源码分析之 Http Server 模块 Swoole 源码分析之 Http Server 模块 Http 模块的注册初始化 这次我们分析的就是 Swoole 官网的这段代 ...

  7. PHP 中使用 ElasticSearch 的最佳实践 (中)

    引言 在上一篇文章当中,我们介绍了如何在 ElasticSearch 中创建索引以及建立字段映射关系. 接下来的这篇文章,我们将在 Laravel 中对商品信息进行增删改查及搜索. 记得 Elasti ...

  8. Aspire项目发布到远程k8s集群

    前提 你必须会创建aspire项目,不会的请先看微服务新体验之Aspire初体验 Aspirate (Aspir8) Aspirate 是将aspire项目发布到k8s集群的工具 安装aspirate ...

  9. 从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践

    本文分享自华为云社区<DTSE Tech Talk × openGemini :从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践>,作者:华为云开源. 在本期<从 ...

  10. 使用python获取房价信息

    从贝壳网获取房价信息. 基本的步骤和我的这篇博文一样:https://www.cnblogs.com/mrlayfolk/p/12319414.html.不熟悉的可参考一下. 下面的代码是获取3000 ...