如下代码所示:
public class DBtest
{
/**
* @param args
*/
public static void main(String[] args)
{
DT t = new T1();
t.get();
}}
class DT
{
public int i = 10;
public void get(){set();System.out.println(this);System.out.println(this.i);}
public void set(){}
}
class T1 extends DT
{
public int i = 100;
public void set(){System.out.println("T1.set " + this + " " + this.i);}
}
两次打印的i的值不同,但i所对应的对象地址显示的却是同一个,为什么呢?
public class DBtest
{
/**
* @param args
*/
public static void main(String[] args)
{
DT t = new T1();
t.get();
}}
class DT
{
public int i = 10;
public void get(){set();System.out.println(this);System.out.println(this.i);}
public void set(){}
}
class T1 extends DT
{
public int i = 100;
public void set(){System.out.println("T1.set " + this + " " + this.i);}
}
两次打印的i的值不同,但i所对应的对象地址显示的却是同一个,为什么呢?
至于地址为什么是相同的呢?JAVA中,对象名只是一个引用,用于指向具体的对象。在你的对象中,只有一个对象名t,this也就是指的它。所以当你打印this的地址的时候自然会是一样的,但它们具体指向的对象就是3楼所说的了,并不一致。