写点什么

Java 中的 super 和 this 关键字详解

作者:共饮一杯无
  • 2022-10-24
    浙江
  • 本文字数:895 字

    阅读完需:约 3 分钟

Java中的super和this关键字详解

父类空间优先于子类对象产生

在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非 private 修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。理解图解如下:


super 和 this 的含义

super :代表父类的存储空间标识(可以理解为父亲的引用)。this :代表当前对象的引用(谁调用就代表谁)。

super 和 this 的用法

  1. 访问成员


this.成员变量 ‐‐ 本类的 super.成员变量 ‐‐ 父类的 this.成员方法名() ‐‐ 本类的 super.成员方法名() ‐‐ 父类的


用法演示,代码如下:


class Animal {    public void eat() {        System.out.println("animal : eat");    }}class Cat extends Animal {    public void eat() {        System.out.println("cat : eat");    }    public void eatTest() {        this.eat(); // this 调用本类的方法        super.eat(); // super 调用父类的方法    }}public class ExtendsDemo08 {    public static void main(String[] args) {        Animal a = new Animal();        a.eat();        Cat c = new Cat();        c.eatTest();    }}
输出结果为:animal : eatcat : eatanimal : eat
复制代码


  1. 访问构造方法


this(...) ‐‐ 本类的构造方法 super(...) ‐‐ 父类的构造方法


子类的每个构造方法中均有默认的 super(),调用父类的空参构造。手动调用父类构造会覆盖默认的 super()。super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。

继承的特点

  1. Java 只支持单继承,不支持多继承。


//一个类只能有一个父类,不可以有多个父类。class C extends A{} //okclass C extends A,B... //error


  1. Java 支持多层继承(继承体系)。


class A{}class B extends A{}class C extends B{}


顶层父类是 Object 类。所有的类默认继承 Object,作为父类。


  1. 子类和父类是一种相对的概念。


本文内容到此结束了,

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力

如有错误❌疑问💬欢迎各位指出。

主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

发布于: 刚刚阅读数: 3
用户头像

鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入

全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。

评论

发布
暂无评论
Java中的super和this关键字详解_Java_共饮一杯无_InfoQ写作社区