此关键字的运行时和编译时间不同

时间:2018-07-16 09:09:34

标签: java object inheritance memory

1。有人可以说明它是如何工作的吗?为什么打印1而不是2?

2。从Oracle Official Java教程中,this的定义:在实例方法或构造函数中,这是对当前对象的引用,该对象是正在调用其方法或构造函数的对象。您可以使用实例方法或构造函数来引用当前对象的任何成员。

    // Base Class
    class A { 

        public int m = 1;


        public void view(){
            // Print variable m
            System.out.println(this.m);

            //print the current class name
            System.out.println(this.getClass());
        }

    }

    // Subclass extends Base Class
    public class B extends A{

        // Define another variable m
        public int m = 2;

        public static void main(String[] args) {
            B b = new B();
            b.view();
        }

    }

下面是view(){}的调试:

我的问题是: 您可以看到当前对象是B,当我们使用this时,它代表B,在基类A中 m = 1,在派生类B中m = 2,然后使用this.m,它应该打印2,不是吗?

1 个答案:

答案 0 :(得分:0)

在Java中,变量不是多态的;他们不会互相覆盖。