super关键字

发布于:2023-01-21 ⋅ 阅读:(461) ⋅ 点赞:(0)

一、实义及修饰属性内容

        1、super:指的是: 父类的

        2、super可以修饰属性,可以修饰方法;

        在子类中均存在super调用父类的内容,但大部分均可省略

        3、在特殊情况下,当子类和父类的属性重名时,你要想使用父类的属性,必须加上修饰符super.,只能通过super.属性来调用

        4、在特殊情况下,当子类和父类的方法重名时,你要想使用父类的方法,必须加上修饰符super.,只能通过super.方法来调用

        6.以下代码中父类和子类中age数值不同,所以必须加super

父类:

public class Person {
    int age = 30;
    public void eat(){
        System.out.println("我可以吃饭");
    }

}

子类: 

public class Student extends Person{
    int age = 20;
    double score;
    public void  study(){
        System.out.println("我可以学习。。。");
    }
    public void eat(){
        System.out.println("我可以吃饭??????");
    }
    public void a(){
        System.out.println(this.age);//20
        System.out.println(this.age);//20
        System.out.println(super.age);//30

        this.eat();
        super.eat();
    }
}

二、修饰构造器

        1、其 实 我 们 平 时 写 的 构 造 器 的 第 一 行 都 有 : super() -->作 用:调 用 父 类 的 空 构 造 器 ,只 是 我 们 一 般 都 省 略 不 写(所 有 构 造 器 的 第 一 行 默 认 情 况 下 都 有 super()。但 是 一 旦 你 的 构 造 器 中 显 示 的 使 用 super调 用 了 父 类 构 造 器,那 么 这个 super()就不 会 给 你 默 认 分 配 了 。如 果 构 造 器 中 没 有 显 示 的 调 用 父 类 构 造 器 的 话 ,那 么 第 一 行 都 有 super(),可 以 省 略 不 写)!

        2、如 果 构 造 器 中 已 经 显 示 的 调 用 super父 类 构 造 器 ,那 么 它 的 第 一 行 就 没 有 默 认 分 配 的 super();

        3、在构造器中,super调用父类构造器和this调用子类构造器只能存在一个,两者不能共存:

因为super修饰构造器要放在第一行,this修饰构造器也要放在第一行:

解决方案为:二选一

                将this(score)改为 this.score= score;

4、以后写代码构造器的生成可以直接使用IDEA提供的快捷键:

      • 第一步 :alt+insert
      • 第二步:

      • 第三步

      • 第四步

最终生成:


网站公告

今日签到

点亮在社区的每一天
去签到