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. 网络性能监测与诊断的专家-AnaTraf

    网络性能问题是困扰许多企业和组织的常见问题.网络速度慢.延迟高.丢包率高.应用卡顿等问题都会严重影响用户体验和工作效率.为了解决这些问题,企业需要对网络流量进行分析和诊断,找出问题根源并采取措施进行优 ...

  2. PageOffice 在线打开 word 文件并添加水印

    一.服务器端方法插入水印 1.插入文字水印 WordDocument doc = new WordDocument(); //添加水印 ,设置水印的内容 doc.getWaterMark().setT ...

  3. d3d12龙书阅读----绘制几何体(上) 课后习题

    d3d12龙书阅读----绘制几何体(上) 课后习题 练习1 完成相应的顶点结构体的输入-布局对象 typedef struct D3D12_INPUT_ELEMENT_DESC { 一个特定字符串 ...

  4. 超全、超简单Vue微信公众号授权登录指南

    <template> <div id="app"> <h1>微信授权登陆</h1> <div> <div> ...

  5. 国产Linux音视频聊天程序开发遇到的坑及解决:相互听不到对方声音?

    最近完成了一个银河麒麟上的视频聊天项目,在我们开发机上测试一切正常后,提交给甲方测试.结果发现在甲方的某些银河麒麟V10的电脑上,听不到声音. 这个问题,使用<Avalonia 实现跨平台的IM ...

  6. .net程序员学习java篇一(搭建SSM)

    一.安装IDE 相比于.net环境的一气呵成,java可能麻烦一点,这里记录下来,避免萌新踩坑 1.1安装JDK,这里不要玩什么花哨,老老实实选个大众版(Oracle JDK1.8x),设置环境变量, ...

  7. tkinter的Text组件设置禁止编辑

    完整代码: from tkinter import * import requests window = Tk() window.geometry('1000x500+300+100') window ...

  8. WPF之单例模式

    项目 2019/10/09   问题 2019年10月9日星期三 上午2:46 1.为了实现单例模式,在App类中添加了如下代码,使用了信号量,但是为什么返回;isNew一直为true public ...

  9. react 样式继承 属性传递

    # 样式 import styled from 'styled-components' const Button = styled.button` font-size: 20px; border: 1 ...

  10. Vue TypeScript 实战:掌握静态类型编程

    title: Vue TypeScript 实战:掌握静态类型编程 date: 2024/6/10 updated: 2024/6/10 excerpt: 这篇文章介绍了如何在TypeScript环境 ...