2013-06-05 76 views
6

我已經爲任務的一部分包含Java擴展類主要方法

class Base { 
    public static void main(String[] args){ 
    System.out.println("Hello World"); 
    } 
} 

public class Factorial extends Base{ 


} 

我的任務就是運行代碼,然後解釋文件的output.The名稱下面的代碼是Factorial.java。代碼運行沒有問題,並打印Hello World,這對我來說是令人驚訝的。在輸入代碼之前,我認爲它不會編譯,因爲正在擴展的父類應該在另一個文件中,但現在我不太確定。將欣賞soome澄清。

+1

作業?無論如何,這裏沒什麼奇怪的。你爲什麼困惑? –

+2

我不明白,你的意思是'Factorial'與'Base'在同一個文件中?你如何「運行代碼」? – fge

+1

所以你用來運行它的命令是「java Factorial」? –

回答

12

Java允許您在一臺.java文件與條件,你可以有最多一個public如果你那麼公共類的名字必須的名稱匹配中定義多個類.java文件。在你的情況下,聲明public的類是Factorial,因此你的文件名必須是Factorial.java

繼承在這裏工作像往常一樣和public static void main()Factorial這就是爲什麼你看到你上執行java Factorial輸出繼承。

1

您可以在同一個文件中有多個班級,但只有一個公開班級,因爲Base不是公開班級,但這不是推薦的做法。

+0

我是否正確地認爲自擴展類繼承父類的主函數,它會在程序運行後立即執行? – user1107888

+0

@ user1107888是的,因爲'Factorial'擴展了'Base',它也繼承了主要的方法。 –

+1

@ user1107888'main'方法是靜態的;它與類本身相關聯。由於'Factorial'擴展了'Base','Factorial'沒有定義'main','Factorial'所看到的'main'是'base'中的'main'。 – fge