在继承java中调用父类构造函数和超级变量

时间:2017-02-06 02:46:47

标签: java inheritance super

我对java中的超级变量有疑问。我知道它用于从子类调用父类构造函数并访问父类的方法,但我有几个问题。首先,我总是认为当调用方法或构造函数时,我们必须发送存储在构造函数或方法的参数中的参数。当我们使用Super构造函数调用该方法时,我们只发送尚未初始化的变量。其次,我查找了Super变量的定义并发现:' java中的super关键字是一个引用变量,用于引用直接父类对象。'这究竟是什么意思?

1 个答案:

答案 0 :(得分:0)

尽管如此,您的问题似乎并不十分明确,但我认为您对超级关键字感到困惑。

看一下我为super关键字的使用而写的以下几行。

假设一个父类有一个默认构造函数和三个方法(非静态方法A,非静态方法B和静态方法C)。类Son扩展了父类,并覆盖了父方法A.父子共享继承关系。

  1. 现在,没有创建父对象,如果Son想要使用父构造函数,那么可以通过写“ super()<来使用它/ strong>“作为Son的构造函数中的第一个语句。 构造函数调用必须在child的构造函数内完成。
  2. 儿子重写了父亲的方法A 但仍想使用父亲对同一方法的实现。这可以通过使用“super.methodName()” 而不创建父对象来完成。但是,也可以通过在main方法中创建父对象来完成。
  3. 儿子可以使用不覆盖的方法(父类的方法B),而不用任何非静态方法在超级关键字内创建父对象。虽然,您也可以简单地在子类中创建父对象并使用它。
  4. 为了访问儿子内部父亲的静态方法(显然没有被覆盖,因为你不能覆盖静态方法),我们可以使用父亲和儿子的对象。
  5. 因此,如果您可以阅读超级关键字的定义并阅读我为超级关键字的使用而给出的示例,那么我希望它应该清楚。

    但是,如果您仍然不清楚任何情况,请随时评论他们。