标题: this关键字 [打印本页] 作者: 瑞雪雄起 时间: 2015-9-14 14:59 标题: this关键字 package pro.test1;
class P{
public void printClassName()
{
System.out.println(this.getClass().getName());
}
}
class S extends P
{
}
public class Test
{
public static void main(String[] args)
{
P p=new S();
p.printClassName();
}
}
为什么输出:pro.test1.S作者: cc3441251 时间: 2015-9-14 15:15
调用的是成员函数,应该是看new s()的成员函数作者: 刘凯1213 时间: 2015-9-14 15:31
方法中的 this 代表具体的对象,虽然 S 中没有重写 P 的打印方法,但是实际上它继承过来了,当你调用 p.print 的时候 实际上最终调用的是 p 指向的对象,而它的指向是自己的子类对象,所以最终 this 代表的是具体的那个 S 子类对象, 所以打印输出的是 s作者: 瑞雪雄起 时间: 2015-9-14 16:35
我把上面的问题改一下:在P类中有属性x=0;
在S类中有属性x=1;
把PrintClassName()中的方法体改成System.out.println(this.x);
那你认为输出的结果是啥呢!