我知道可以在Java中执行此操作:
public class animal {...}
然后
public class dog extends animal {...}
然后你可以编写任何可以访问动物方法的狗方法。
但是,我想知道有没有办法扩展方法
例如
public void generateAnimal() {...}
然后
public void generateDog() extends generateAnimal() {...}
但这并没有通过编译器。 所以我的问题是:
是否可以在Java中继承方法?
答案 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()
}
我希望有所帮助。