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

时间:2015-04-09 21:57:23

标签: java inheritance methods

我知道可以在Java中执行此操作:

public class animal {...}

然后

public class dog extends animal {...}

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

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

例如

public void generateAnimal() {...}

然后

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

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

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

4 个答案:

答案 0 :(得分:1)

完全按照您在那里展示的方式完成,没有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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

    // Do subclass specific work here
}

方法本身不是对象。方法是要被称为。

答案 3 :(得分:0)

如果他们在同一个班级,没有。但是,假设您要运行所有generateAnimal(),然后添加您的generateDog()特定代码,您可以这样做:

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

我希望有所帮助。

相关问题