Super的详解

Super的详解

注意点:

  1. super调用父类的构造方法,必须在构造方法中的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this 不能同时调用构造方法

和this的不同点

  • 代表的对象不同:

this:本身调用者这个对象

super:代表父类对象的应用

  • 前提

this:没用继承也可以使用

super:只能在继承条件才可以使用

  • 构造方法

this:本类的构造

super:父类的构造

java 复制代码
package Demo01;
//在java中所有的类都默认直接或者间接继承object类
//子类可以使用父类的全部方法
public class Person {
    protected String name="父类";

    public Person(){
        System.out.println("父类无参");
    }




}
java 复制代码
package Demo01;

public class Student extends Person{
    public String name="子类";

    public Student(){
        //这边存在一个隐藏代码super()调用了父类的无参,并且只能在第一行
        //父类若没有无参则子类无参报错无法运行
        //除非自己写super()去调用父类有参构造
        System.out.println("子类无参");
    }
    public void test1(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }




}
java 复制代码
package Demo01;
//一个项目应该只存一个main方法
public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.test1("测试");
    }
}

输出的结果为:

父类无参

子类无参

测试

子类

父类

类Application中第一个实例化也实现了无参构造的运行,证明了运行子类的无参构造会先执行父类的无参构造。下一行的test1方法中,测试直传递参数,this和super的区别,结果显示this是调用本类的属性而super调用的是父类的属性。

相关推荐
cynicme14 分钟前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
青云交1 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu1 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
Lei活在当下2 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
不穿格子的程序员2 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·
lkbhua莱克瓦243 小时前
Java练习-正则表达式 1
java·笔记·正则表达式·github
yue0083 小时前
C#类继承
java·开发语言·c#
凯芸呢3 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
竹竹零3 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
钱多多_qdd3 小时前
基础篇:IoC(三):Bean实例化策略InstantiationStrategy
java·spring