• 关于this


    this是指当前类的实例对象

     1 public class A {
     2     public void init()
     3     {
     4         System.out.println("1、A init");
     5         this.dosomething();
     6     }
     7        
     8     public void dosomething()
     9     {
    10         System.out.println("2、A dosomething");
    11     }
    12 }
     1 public class B  extends A{
     2     public void init()
     3     {
     4         System.out.println("3、B init");
     5         super.init();
     6     }
     7        
     8     public void dosomething()
     9     {
    10         System.out.println("4、B dosomething");
    11     }
    12        
    13     public static void main(String[] args) {
    14         B b=new B();
    15         b.init();    
    16     }

    为什么会是这个结果??

    这是因为如果是无参函数,那么有一个默认的参数是this,也就是类的实例对象

        super.init(),实际是super.init(b)

    那么

        在类A中this.dosomething,就是A.dosomething(),所以结果就是3 1 4

    public String name="tom";
        public void init()
        {
            System.out.println(this.name);
        }
    public String name="jack";
        public void init()
        {  
            super.init();
            System.out.println(this.name);
        }
     
        public static void main(String[] args) {
            B1 b=new B1();
            b.init();  
             
            System.out.println(b.name);
             
            A1 a=new B1();
            a.init();  
             
            System.out.println(a.name);
        }

    这里的运行结果为什么又不符合上面说的默认参数是一个this的实例对象呢?

    这是因为:

    成员变量编译运行看左面

    成员方法编译看左面,运行看右面

  • 相关阅读:
    4.定时器
    LSTM分类层的理解
    对机器学习中end-to-end learning(端到端学习)的理解
    对非极大值限制(NMS)的理解
    ROI pooling
    softmax的理解
    长尾理论(long tail )的理解
    对双线性插值的理解
    RPN的理解
    卷积神经网络(CNN)和Faster-RCNN的理解
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4079447.html
Copyright © 2020-2023  润新知