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,不是吗?
答案 0 :(得分:0)
在Java中,变量不是多态的;他们不会互相覆盖。