我想调用扩展类的函数。如何才能做到这一点?
class Main{
Function();
}
class Other extends Main{
public void Function() { /* The function code */ }
}
public class BaseCls {
void function() {
System.out.println("Base");
}
}
public class ExtCls extends BaseCls {
void function() {
super.function();
System.out.println("ExtCls");
}
public static void main(String args[]) {
new ExtCls().function();
}
}
您可以将Main
定义为抽象类,并将function()
定义为抽象方法,在Other
子类中实现。但是,在某些时候你必须创建一个Other
实例。
class Main {
public void Function() { F2(); }
public abstract void F2();
}
class Other extends Main {
public void F2() { /* code here */ }
}
类Main
对类Other
中不属于类Main
的内容没有特殊权限。此外,Main
对象不一定是Other
对象。因此,您需要在类Main
的对象调用Function()
时定义行为。你也可以
Function()
是抽象的,意味着你不能创建类Main
的对象,类Other
被迫定义Function()
或者是抽象本身,或者Main
中的默认实现,该实现适用于Main
s而不是Other
s的对象。根据情况,这两种方式都是可以接受的。如果您需要帮助选择哪一个更适合您的情况,您必须提供更多详细信息。
例:
class Main {
public abstract void Function();
private void SomeFunction() {
Function();
}
}
class Other extends Main {
public void Function() { /* code here */ }
}
要么
class Main {
public void function() { /* default code here, can be empty */ };
public void someFunction() {
function();
}
}
class Other extends Main {
public void function() { /* code here */ }
}
class Example {
public void example() {
Main main = new Main();
Other other = new Other();
main.function(); // call the function defined in class Main
other.function(); // call the function defined in class Other
main.someFunction(); // call Main.someFunction, which calls Main.function
other.someFunction(); // call Main.someFunction, which calls Other.function
}
}