對於以下Java代碼段,「run」的方法發生四次。我對這四次「跑步」事件的關係頗感混淆。原始代碼很長,我只保留與我的問題相關的部分。關於方法覆蓋
1. public final class Job extends AbstractJob {
2. private Job() {
3. }
4. public static void main(String[] args) throws Exception {
5. new Job().run(new Path("testdata"), output, 10);
6. }
7.
8. @Override
9. public int run(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
10. run(input, output, alpha0);
11. return 0;
12. }
13. public void run(Path input, Path output, double alpha0)
14. throws IOException, ClassNotFoundException, InterruptedException {
15. ClusterDriver.run(directoryInput, output, alpha0);
16. }
17. }
我可以低估這段代碼的調用順序,如下所示。
起初,他在第5行的方法被調用。由於其特定的參數設置,3個參數,編譯器自動使用第13行中定義的run方法。(如果我們只有第5行中有一個參數,那麼編譯器將使用第9行中定義的run方法代替
在第9行中定義的run方法,它會調用在第10行,基本上是在13行
定義的run方法run方法是我的理解是否正確?
這是關於方法*重載*,而不是*覆蓋*。是的,你的理解是正確的。 – mre
你似乎並不困惑,聽起來對我來說很合適。也許你缺乏信心。 ;) –