假设我有:

class Superclass {
  //fields...

  methodA() {...}

  methodB() {...}

...
}

class Subclass extends Superclass {
   //fields...

   methodA() {
      // Here I need to call methods A and B from superclass:
      // For this, I can use supper
      super.methodA();
      super.methodB();

      // Or I have to instantiate the superclass and use the instance
      Superclass superclass = new Superclass();
      superclass.methodA();
      superclass.methodB();
}


它可以双向工作,但是我想知道哪种更好。这些方法中的任何一种都是不好的编程技术吗?我希望你能给我答案和论点。

最佳答案

  super.methodA();

  Superclass superclass = new Superclass();
  superclass.methodA();


这两个方法A的调用在不同的实例上工作,因此它们是完全不同的。 super.methodA()在当前实例上执行methodAsuperclass.methodA()在与当前实例无关的新methodA实例上执行Superclass

您几乎总是使用第一个选项。至于第二个选项,创建一个新实例,在该实例上调用一个方法,然后再也不用对该实例做任何事情是没有意义的。

关于java - 在子类的方法中本地调用父类(super class)方法时,使用“super”关键字还是使用父类(super class)实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31130635/

10-12 04:20