大家好,我有一个关于Java中‘’关键字的问题。(1)假设Computer从Machine扩展而来,我们有当前的代码:
public class Machine {
private String name = "Machine";
public void test()
{
System.out.println(this.name);
}
public void test2()
{
System.out.println(this);
}
}
public class Computer extends Machine {
public void test()
{
System.out.println(this);
}
}
public class main {
public static void main(String[] args) {
Machine c = new Computer();
c.test();
c.test2();
}
}
Its prints:
Computer@1db9742
Computer@1db9742
它的意思是' this‘在Computer中指的是计算机,这是我所理解的,但中的' this’也指的是计算机,这是我不理解的。
这是怎么发生的,为什么..?(2)所以如果Machine m = new Computer()
这是真的?
所以,对于所有回答我的人来说,我可以理解这与new
有关,或者我们所说的类型所指向的…?
发布于 2015-03-24 02:06:16
关键字this
引用当前对象,即类的实例,而不是类本身。您已经创建了一个对象(使用new Computer()
),它是Computer
的一个实例。因为Computer
是Machine
的子类,所以它也是Machine
的实例,但是默认的toString()
方法将返回一个包含最精确类型的字符串,在本例中为Computer
。
发布于 2015-03-24 02:04:06
this
是指向当前对象的指针,对象知道它们是什么类型。
发布于 2015-03-24 02:07:01
您不能从类中访问私有变量,您必须创建getter方法或将变量设置为公共变量,而且System.out.println()中的此方法调用toString()方法,如果未定义,它将输出类似于结果中的内容(对象类型和内存中的位置)。
只需在Machine类中创建方法:
public String getName() {
return name;
}
并在main方法中添加以下内容:
System.out.println(c.getName());
https://stackoverflow.com/questions/29217221
复制相似问题