2013-04-01 37 views
0

假設B extends A並且我們有一個聲明A a=new B();超類變量引用子類對象有什麼用途?對象可以訪問哪些字段和方法a((只有子類方法和變量)或者和父類))?在java中由超類變量引用的子類對象有什麼用?

謝謝你

+1

Google'java inheritance polymorphism'。你應該能夠找到你的問題的答案。 –

+0

看看這裏http://stackoverflow.com/questions/10177523/using-superclass-to-initialise-a-subclass-object-java –

回答

1

原因是抽象。這個想法是,你不需要知道關於對象的每一個細微的細節。例如,假設你正在開車。大多數情況下,右側的踏板會讓你走得更快,左側的踏板減慢了你的速度,而前方的大圓圈則讓你駕駛車輛。發生這種情況對於駕駛員(也稱爲用戶)來說並不重要,但是爲了使車輛實際移動,這些細節正常工作是非常重要的。

+0

是的,對於最重要的是,當你在B類中使用任何靜態方法時,你需要使用該類的對象來訪問屬性,或者您的超類必須使用靜態指定符來定義 – Pratik

0

使用使用超類引用類型的是,你不擔心實現類(或特定類),如List a = new ArrayList();

只有超類暴露將是在這種情況下訪問的方法。

-1

嗨簡而言之,我們可以說所有B都是A,而不是所有A都是B。這就是整個繼承的工作原理。它提供了所需的abstarction。

+0

您沒有回答他的問題,但解釋了什麼是抽象。 – danieln

+0

我的第一行回答了他的問題!閱讀!! – NightsWatch

+1

「對象a'可以訪問哪些字段和方法呢?你是在哪裏回答的?恕我直言,你的答案太籠統了。 – Pshemo

0

所以這主要是爲了達到:Polymorphism以及Abstraction

主要原因是客戶端針對較高標籤接口進行編碼,不擔心低層實現。

這可以靈活地更改實現而不更改客戶端。客戶端也可以靈活地嘗試多種實現。

在您的示例中,將從a訪問的成員是由A類定義的成員。

相關問題