2014-09-23 66 views
1

如果我定義了2個類;一個叫做Super,它有一個叫做potato()的方法,第二個叫Sub,它擴展了Super。訪問超類中定義的方法[Java]

然後我聲明一個Sub類型的對象;

即子胡蘿蔔;

在同一個包中的第三個類/ main中。

我可以通過carrot.potato()訪問第三類/ main中的potato()方法嗎?

+3

您能告訴我們代碼嗎?答案取決於訪問修飾符在這裏。 – 2014-09-23 07:51:43

+1

我已經簡化了它,所以我不必擔心顯示我的代碼。我問的是相當假設的,但想象馬鈴薯()方法是公開的。 – 2014-09-23 07:54:26

+2

@Agressive是的,你可以。如果您使用正確的訪問修飾符,如上所述Suresh – Mohit 2014-09-23 07:55:37

回答

0

由於每個孩子是-A父母,您也可以通過Child訪問該方法。假設它是一個公共方法(正如你在評論中提到的那樣)。

如果你要明白我的意思的第一評論,have a look here.

2

子延伸超級。這意味着sub是一個超級細節。這意味着您可以將sub精確對待爲Super對象。所以carrot.potato()是正確的。

+0

美麗,這正是我的想法。但是,當我嘗試這樣做時出現此錯誤:「無法對超靜態方法blabla進行靜態引用」。爲什麼如果方法被自己類型的對象訪問時該方法是靜態的? – 2014-09-23 07:58:35

+0

@AggressiveSneeze。這意味着您不是從* object *訪問方法,而是從靜態方法訪問。這與繼承無關,你的問題似乎與此有關。 – 2014-09-23 08:07:24

+0

但我通過(類型sub的對象的名稱).methodname()來訪問它。這是不正確的? – 2014-09-23 08:09:25