我想调用扩展类的函数。怎么办呢?
class Main{
Function();
}
class Other extends Main{
public void Function() { /* The function code */ }
}
答案 0 :(得分:2)
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();
}
}
答案 1 :(得分:0)
您可以将Main
定义为抽象类,并将function()
定义为抽象方法,在Other
子类中实现。在某些时候,您必须创建Other
的实例。
答案 2 :(得分:0)
class Main {
public void Function() { F2(); }
public abstract void F2();
}
class Other extends Main {
public void F2() { /* code here */ }
}
答案 3 :(得分:0)
班级Main
对于班级Other
中不属于班级Main
的内容没有特殊权限。此外,Main
对象不一定是Other
对象。因此,当类Main
的对象调用Function()
时,您需要定义行为。你可以
Function()
是抽象的,这意味着您无法创建类Main
的对象,而类Other
被迫定义Function()
或本身是抽象的,或Main
中的默认实现,该实现适用于Main
而非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
}
}