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

目录
相关文章
|
3月前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
32 0
|
3月前
|
SQL 安全 Java
Android经典面试题之Kotlin中object关键字实现的是什么类型的单例模式?原理是什么?怎么实现双重检验锁单例模式?
Kotlin 单例模式概览 在 Kotlin 中,`object` 关键字轻松实现单例,提供线程安全的“饿汉式”单例。例如: 要延迟初始化,可使用 `companion object` 和 `lazy` 委托: 对于参数化的线程安全单例,结合 `@Volatile` 和 `synchronized`
45 6
|
3月前
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
63 4
|
3月前
|
安全 Java
Java面试题:解释synchronized关键字在Java内存模型中的语义
Java面试题:解释synchronized关键字在Java内存模型中的语义
41 1
|
3月前
|
设计模式 缓存 安全
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
48 1
|
3月前
|
安全 Java API
Java面试题:解释synchronized关键字在Java中的作用,并讨论其使用场景和限制。
Java面试题:解释synchronized关键字在Java中的作用,并讨论其使用场景和限制。
28 0
|
3月前
|
存储 缓存 安全
Java面试题:介绍一下jvm中的内存模型?说明volatile关键字的作用,以及它如何保证可见性和有序性。
Java面试题:介绍一下jvm中的内存模型?说明volatile关键字的作用,以及它如何保证可见性和有序性。
31 0
|
3月前
|
设计模式 缓存 安全
Java面试题:详解单例模式与内存泄漏?内存模型与volatile关键字的实操?并发工具包与并发框架的应用实例
Java面试题:详解单例模式与内存泄漏?内存模型与volatile关键字的实操?并发工具包与并发框架的应用实例
27 0
|
3月前
|
存储 安全 Java
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
29 0
|
3月前
|
算法 安全 Java
Java面试题:解释JVM中的堆内存分代收集策略,并讨论年轻代和老年代的特点,描述Java中的线程池,并解释线程池的优点,解释Java中的`volatile`关键字的作用和使用场景
Java面试题:解释JVM中的堆内存分代收集策略,并讨论年轻代和老年代的特点,描述Java中的线程池,并解释线程池的优点,解释Java中的`volatile`关键字的作用和使用场景
35 0