假設B extends A
並且我們有一個聲明A a=new B();
超類變量引用子類對象有什麼用途?對象可以訪問哪些字段和方法a((只有子類方法和變量)或者和父類))?在java中由超類變量引用的子類對象有什麼用?
謝謝你
假設B extends A
並且我們有一個聲明A a=new B();
超類變量引用子類對象有什麼用途?對象可以訪問哪些字段和方法a((只有子類方法和變量)或者和父類))?在java中由超類變量引用的子類對象有什麼用?
謝謝你
原因是抽象。這個想法是,你不需要知道關於對象的每一個細微的細節。例如,假設你正在開車。大多數情況下,右側的踏板會讓你走得更快,左側的踏板減慢了你的速度,而前方的大圓圈則讓你駕駛車輛。發生這種情況對於駕駛員(也稱爲用戶)來說並不重要,但是爲了使車輛實際移動,這些細節正常工作是非常重要的。
是的,對於最重要的是,當你在B類中使用任何靜態方法時,你需要使用該類的對象來訪問屬性,或者您的超類必須使用靜態指定符來定義 – Pratik
使用使用超類引用類型的是,你不擔心實現類(或特定類),如List a = new ArrayList();
只有超類暴露將是在這種情況下訪問的方法。
嗨簡而言之,我們可以說所有B都是A,而不是所有A都是B。這就是整個繼承的工作原理。它提供了所需的abstarction。
您沒有回答他的問題,但解釋了什麼是抽象。 – danieln
我的第一行回答了他的問題!閱讀!! – NightsWatch
「對象a'可以訪問哪些字段和方法呢?你是在哪裏回答的?恕我直言,你的答案太籠統了。 – Pshemo
所以這主要是爲了達到:Polymorphism
以及Abstraction
。
主要原因是客戶端針對較高標籤接口進行編碼,不擔心低層實現。
這可以靈活地更改實現而不更改客戶端。客戶端也可以靈活地嘗試多種實現。
在您的示例中,將從a
訪問的成員是由A
類定義的成員。
Google'java inheritance polymorphism'。你應該能夠找到你的問題的答案。 –
看看這裏http://stackoverflow.com/questions/10177523/using-superclass-to-initialise-a-subclass-object-java –