java 继承父类中的this指的是子类对象

java在继承时,如果B类继承自A类,这时在A类调用this,其实指向的是子类。

证明如下

public class test3 extends test2{
    public void find(){
        System.out.println("test3 find");
    }

    public void load(){
        System.out.println("test3 load");
        System.out.println(this);
        super.load();
    }

    public static void main(String[] args) {
        test3 t3 = new test3();
        t3.load();
    }
}
public class test2 {
    public void find(){
        System.out.println("test2 find");
    }

    public void load(){
        System.out.println("test2 load");
        System.out.println(this);
        this.find();
    }
}

上面的代码执行结果如下


image.png

这个代表着父类调用被覆盖的方法时,其实是调用的子类方法
继承时,对于方法覆盖时,new的谁,this就指向谁,多态性决定,如果是成员变量,this,在哪个类就指向哪个类的成员变量,成员变量没有多态性

这个其实很有用处,在java里 classloader里有两个方法 findclass loadclass,其中自定义classloader时如果你重写了这两个方法,当你在调用 loadclass时,按照双亲委派机制,需要调用父类的loadclass。而父类没有加载到该类时,会调用到findclass,这时其实调用的是你自定义的findclass。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容