是否可以扩展 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
}
方法本身不是对象。方法是用来调用的。
我知道在 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
}
方法本身不是对象。方法是用来调用的。