this与super关键字(阿里巴巴面试竟然问道这个了……今天把它盘透彻了!)

简介: this与super关键字(阿里巴巴面试竟然问道这个了……今天把它盘透彻了!)

image.pngimage.pngimage.pngimage.png接下来将详细分析this和super的作用和区别。

3、this

this相当于当前对象实例,或者当前对象的一个引用,this有如下作用:

  1. 调用当前对象中的方法和属性
  2. 区分对象属性和方法形参
  3. 调用构造方法(必须在构造函数的第一行)

this相当于当前对象实例举例:image.pngimage.png

4、super

super可以理解为父类(直接父类,如果有多层继承关系这里指的是最近的父类)对象的引用。super有如下的作用:

  1. 调用父类非私有的属性和方法
  2. 区分当前类与父类同名的属性和方法
  3. 调用父类的构造函数(必须在构造函数的第一行)

调用父类属性和方法示例:image.png区分当前类与父类同名的属性和方法示例:

/**
 *  父类
 */
public class Father {
    public String name;
    public void doSomething3() {
        // toDo
    }
    public void doSomething4() {
        // toDo
    }
}
/**
 *  子类代码修改成如下
 */
public class Son extends Father {
    public String name;
    public void doSomething() {
        // super可以区分父类方法与当前对象的方法
        doSomething3();
        doSomething4();
        super.doSomething3();
        super.doSomething4();
        // 区分当前父类的属性与当前类的属性
        String fatherName = super.name;
        String sonName = name;
    }
    @Override
    public void doSomething3() {
        // todo
    }
    @Override
    public void doSomething4() {
        // todo
    }
}

调用父类的构造函数(必须在构造函数的第一行)

image.png5、总结

5.1 对比差异

this 基本概念


访问本类实例属性和方法

super 基本概念


访问父类实例属性和方法


this 查找范围


先查找本类,不存在再查找父类

super 查找范围


直接查找父类


this 其他功能


单独使用表示当前对象

super 其他功能


子类复写父类方法,用于访问父类同名方法

5.2 相同点

都是关键字,起指代作用

构造方法中必须在第一行调用其它构造函数


5.3 总结图image.png


image.png

目录
相关文章
|
Java 程序员
面试官的加分题:super关键字全解析,轻松应对!
小米,29岁程序员,通过一个关于Animal和Dog类的故事,详细解析了Java中super关键字的多种用法,包括调用父类构造方法、访问父类成员变量及调用父类方法,帮助读者更好地理解和应用super,应对面试挑战。
284 3
|
缓存 安全 Java
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
Java的特点和优点,、Java 8的新特性、面向对象、基本数据类型和引用类型、自动拆装箱与自动装箱、==与equals()的区别、为什么重写equals()就要重写hashcode()、抽象类和接口的区别、重载和重写的区别、四种引用方式、wt()和sleep()的区别、java方法是值传递还是引用传递?访问修饰符、static、final、this和super、volatile的用法及原理
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
【Java基础面试四十一】、说一说你对static关键字的理解
这篇文章主要介绍了Java中static关键字的概念和使用规则,强调了类成员与实例成员的区别及其作用域的限制。
|
SQL 安全 Java
Android经典面试题之Kotlin中object关键字实现的是什么类型的单例模式?原理是什么?怎么实现双重检验锁单例模式?
Kotlin 单例模式概览 在 Kotlin 中,`object` 关键字轻松实现单例,提供线程安全的“饿汉式”单例。例如: 要延迟初始化,可使用 `companion object` 和 `lazy` 委托: 对于参数化的线程安全单例,结合 `@Volatile` 和 `synchronized`
725 6
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
348 4
|
安全 Java
Java面试题:解释synchronized关键字在Java内存模型中的语义
Java面试题:解释synchronized关键字在Java内存模型中的语义
201 1
|
设计模式 缓存 安全
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
263 1
|
缓存 Java
【多线程面试题二十三】、 说说你对读写锁的了解volatile关键字有什么用?
这篇文章讨论了Java中的`volatile`关键字,解释了它如何保证变量的可见性和禁止指令重排,以及它不能保证复合操作的原子性。
|
安全 Java API
Java面试题:解释synchronized关键字在Java中的作用,并讨论其使用场景和限制。
Java面试题:解释synchronized关键字在Java中的作用,并讨论其使用场景和限制。
217 0
|
存储 缓存 安全
Java面试题:介绍一下jvm中的内存模型?说明volatile关键字的作用,以及它如何保证可见性和有序性。
Java面试题:介绍一下jvm中的内存模型?说明volatile关键字的作用,以及它如何保证可见性和有序性。
239 0