Java中的super是什么意思?

我在一篇论文中遇到了一个问题,并询问了 Java 中 super 是什么意思?有四种选择:

  • A -super表示当前实例的内存地址
  • B -super表示当前实例的超级实例的内存地址。
  • C -super表示当前实例的超类。
  • D -super可以在main()方法中使用。

我想答案应该是B,但答案是C,是答案错了还是我错了?

我的翻译可能不太准确,你可以自己翻译:

??极好的????????
一种????????????
乙?????????????????????
C??????????
D????main()???

回答

B - super 表示当前实例的超级实例的内存地址。

我想答案应该是B,但答案是C,是答案错了还是我错了?

你错了。 Marco 的回答(和评论)解释了为什么 C 是正确的。

B 答案不正确/荒谬,原因有二:

  1. (普通)Java 程序无法访问内存地址。Java 使用引用,并且在 Java 1中根据引用(而不是地址)来指定事物。

  2. 没有实例的超级实例这样的东西。一个实例是其(最派生)类的两个实例,及其所有超的同时。所以“超级实例”的地址将与实例本身的地址相同。


我认为B可以解释。当前实例内部没有匿名超级实例吗?

那不正确。没有“内”。您的解释是基于对对象建模Java 如何实现对象类型/类的错误理解。

可以这样想:(现实世界的)猫里面有匿名的哺乳动物吗?不。我的小猫“蓬松”哺乳动物,同时也是猫。当我们将猫视为哺乳动物时,我们会故意忽略使其像猫一样的特征,而专注于(仅)哺乳动物的特征。

同样,在 Java 中:

public class Mammal {
    ...
}

public class Cat extends Mammal {
    ...
}

Mammal thing = new Cat();
// The 'thing' still refers to a 'Cat', but we can only see the 
// 'Mammal' characteristics

Cat fluffy = (Cat) thing;
// But when we look at it via 'fluffy', we can see it's 'Cat'
// characteristics too.

System.out.println(fluffy == thing);  // prints "true" because they
                                      // refer to the same object.

1 - 此术语错误可能是英文 -> 中文或中文 -> 英文翻译问题的结果。


以上是Java中的super是什么意思?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>