2012-06-06 33 views
0

假設我有一個班級'Person'和另一個班級'Survey'來擴展Person,所以Survey是子類,Person類是父類。 Person是我寫的第一個類,因此我定義了主要方法,因爲我有一個子類,我可以從父類的main方法調用子類的方法(還是需要繼續將主方法傳遞給雖然我很狡猾,但這是永遠不會有必要的......)?如果是這樣的話,這對於子類繼承父類的屬性但父類不繼承子類的任何屬性這一概念並不直觀?請儘快回覆。提前致謝。主要方法可以放在父類中嗎?如果是的話,可以在該主要方法中實例化子對象嗎?

此外,我還讀了另一個單獨的類可能'driver.java只是爲主要的方法,所以這將意味着所有的類將被導入到這個類,我們要調用其他類的方法主要方法?

我希望我的問題不太複雜。

+7

無關,但如何是一個'Survey'一個'Person'? –

+3

父類通常應該不知道其子類。可以有任意數量的子類,具有任意的功能。 –

+0

這聽起來像你問「我如何重新設計我的代碼而不移動任何代碼」?答案是,「你不」。如果你改變了你的應用程序的工作方式,你將需要隨機播放代碼。如果您更改了您的應用程序入口點的類,那麼您需要移動主要方法,這很簡單。 – jtahlborn

回答

1

讓我解釋給你聽,

  1. 當您在sub class typenew,然後immediatelySuper class constructor is called創建子類的實例,它會持續going tillObject class,這就是所謂的Constructor chaining

  2. 在此過程中,所有的instance variable都是declared and initialized

  3. 而且most important是,當子類的構造函數它稱它進入其超類,並以此類推,直到Object類,然後1st creating the Object class objectthen the class under它,till it reaches the subclass on whose class new was called,你會看到constructor of the super class is called first then its subclass's

對於你上面的問題,我也創造了一個適合我給出的理論解釋的例子。

如:

 public class a { 
    public static void main(String[] args) { 

     B b = new B(); 
     b.go(); 
    } 
} 

class B extends a{ 


    public void go(){ 

     System.out.println("hello"); 

    } 
} 
+0

非常感謝,這有助於我理解你的意思。再次感謝您爲我解決這個問題。 – anonuser0428

+0

不客氣 –

0

嗯,我試過了,即使將主要方法放在父類中,它也能正常工作。但我已經做了一些閱讀,所觀察到的做法是在一個單獨的類中創建主要方法,使得類只有主要方法,而沒有其他方法。這在某些情況下提高了效率,並且是一種更簡潔的donig事物。

相關問題