是否可以扩展 Java 中的方法?

Is it possible to extend Methods in Java?

我知道在 Java 中可以这样做:

public class animal {...}

然后

public class dog extends animal {...}

然后你可以写任何可以访问动物方法的狗方法。

但是,我想知道有没有办法扩展方法

例如

public void generateAnimal() {...}

然后

public void generateDog() extends generateAnimal() {...}

但这并没有通过编译器。 所以我的问题是:

是否可以继承Java中的方法?

如果它们在同一个 class 中,则不会。但是,假设您想要 运行 所有 generateAnimal() 然后添加您的 generateDog() 特定代码,您可以这样做:

public void generateDog(){
    generateAnimal();
    ///do the rest of generateDog()
}

希望对您有所帮助。

是的。

它完全按照你在那里展示的那样完成,没有 extends generateAnimal() 并将该方法名称更改为 generateAnimal()

这称为覆盖。并允许您使用注释 @Override.


public class A {

    public void print(){
        System.out.println("Hello from A!");
    }

}

public class B extends A {

    @Override  // This method overrides A#print() 
    public void print(){
        System.out.println("Hello from B!");
    }

}

然后,调用如下操作:

B b = new B();
b.print();

将打印出:

Hello from B!

这更广为人知的是 Inheritance

是的。

public class Animal {
   public void someAction() {
      System.out.println("from Animal class");
   }
}

public class Dog extends Animal {
   public void someAction() {
      super.someAction();
      System.out.println("from Dog class");
   }
}

public class Main {

  public static void main(String[] args){
      Animal dog = new Dog();
      dog.someAction();
  }
}

输出:

from Dog class
from Animal class

所以你扩展了方法的功能,但最好使用组合而不是继承。

您不能按照您描述的方式扩展方法,但您可以继承该方法,然后从超类调用该方法,如下所示:

@Override
public void inheritedMethod() {
    super.inheritedMethod(); // This will call method from super class

    // Do subclass specific work here
}

方法本身不是对象。方法是用来调用的。