2012-04-30 49 views
-1

我開發一個程序保留在我心中壓倒一切的理念..關於首要原則

class Parent 
{ 
    private void method1() { 
     System.out.println ("Parent's method1()"); 
    } 
    public void method2() { 
     System.out.println ("Parent's method2()"); 
      method1(); 
    } 
} 

class Child extends Parent 
{ 
    public void method1() { 
     System.out.println ("Child's method1()"); 
    } 
     //overriding 
    public void method2() { 
     System.out.println ("Child's method2()"); 
    } 

    public static void main (String args []) { 
     Parent p = new Child(); 
     p.method2();//parent 
    } 
} 

現在,當我調用方法2(),父類方法2()被調用,就像上面說的我在創建對象時傳遞父引用,但以類似的方式,如果我想訪問子類method2(),則一種方法是直接創建子類的對象,但如果我想以類似的方式調用子類method2()通過父母的參考,然後如何可能請告知。

+1

,我不明白你的問題在所有。子類沒有method2。我不知道它是如何被稱呼的。 –

+0

@JBNizet Child類有一個method2,它從Parent繼承它。 –

+0

@JBNizet,是的,我已經編輯,現在的問題 – dghtr

回答

-1

SRINIVAS雷迪Thatiparthy回答你的問題的早期版本。

如果替換子類中的方法,那麼任何孩子實例將使用子類方法。

您可以通過在你的孩子方法的super.method2()方法調用執行從子方法的父類的方法。

或者,你可以投子到父對象,然後調用方法:

Parent parent = (Parent) child; 
parent.method2(); 
+2

最後一部分是完全錯誤的,並且表明您還沒有理解多態和鑄造是什麼。將孩子投擲到父母身上不會改變任何事情。一個孩子是一個孩子,永遠是一個孩子。您將其作爲父母引用的事實不會改變其孩子的性質。 –

+0

父p = new Child(); // child method2()n被調用 p.method2(); //父,我仍然得到method2()的父 – dghtr