美文网首页
java 继承父类中的this指的是子类对象

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

作者: 出水肥龙 | 来源:发表于2021-09-08 09:34 被阅读0次

    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

    相关文章

      网友评论

          本文标题:java 继承父类中的this指的是子类对象

          本文链接:https://www.haomeiwen.com/subject/ovhpwltx.html