这可能是一个愚蠢的问题,但想要澄清一下。我们可以说 'super' 作为对象而不是 java 中的关键字吗?
It might be a dumb question but want to get it clarified. Can we say 'super' as an object rather than keyword in java?
我知道 super 是一个特殊的保留关键字,但从我们使用它的方式来看,它应该被称为对象。有人可以澄清我的想法是对还是错。如果能详细说明一下就更好了
那是不正确的。 super 是 java 中的关键字,用于引用 class 实例的 superclass。
对象是 class 的一个实例。
除非存在 class 的实例,否则不能使用 "super" 一词,因此,它不能被视为等同于对象。
想想一个假设 class Human
。你可以问我"what's your superclass",我会说"it's Creature
"。但是你不能通过询问 "what's your superclass".
"create" 一个新的 Human
也许您的困惑来自构造函数中 "super" 这个词的用法。当我们调用 super();
时,实际上是在执行 superclass 的构造函数。如您所知,构造函数是非常特殊的方法,它们的调用方式与另一种方法不同。如果我要引用 superclass 的 getter,我会改为 super.getWhatever();
。但是,我们不能 super.something()
来调用构造函数,所以我们只是 super();
。
关于在构造 class 的实例时调用 superclass 的构造函数,那是因为你不能在将我定义为 "Creature" 之前调用我 "Human"。所以,你先在我身上创造出生物特性,然后再让我成为人类。
我希望这是有道理的:)。
我知道 super 是一个特殊的保留关键字,但从我们使用它的方式来看,它应该被称为对象。有人可以澄清我的想法是对还是错。如果能详细说明一下就更好了
那是不正确的。 super 是 java 中的关键字,用于引用 class 实例的 superclass。 对象是 class 的一个实例。
除非存在 class 的实例,否则不能使用 "super" 一词,因此,它不能被视为等同于对象。
想想一个假设 class Human
。你可以问我"what's your superclass",我会说"it's Creature
"。但是你不能通过询问 "what's your superclass".
Human
也许您的困惑来自构造函数中 "super" 这个词的用法。当我们调用 super();
时,实际上是在执行 superclass 的构造函数。如您所知,构造函数是非常特殊的方法,它们的调用方式与另一种方法不同。如果我要引用 superclass 的 getter,我会改为 super.getWhatever();
。但是,我们不能 super.something()
来调用构造函数,所以我们只是 super();
。
关于在构造 class 的实例时调用 superclass 的构造函数,那是因为你不能在将我定义为 "Creature" 之前调用我 "Human"。所以,你先在我身上创造出生物特性,然后再让我成为人类。
我希望这是有道理的:)。