程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 對象-請教一下JAVA多態性的問題

對象-請教一下JAVA多態性的問題

編輯:編程解疑
請教一下JAVA多態性的問題

A a=new B();

這個a和A B分別有什麼關系呢?到底是B的對象還是A的對象呢? 如果是B的對象,
a和A又有什麼關系呢? 為什麼不直接寫成 B a= new B()呢?

本人初學者,想請教一下各位,謝謝了!![![圖片說明](http://img.ask.csdn.net/upload/201612/1          3/1481596537_959620.jpg)圖片說明](http://img.ask.csdn.net/upload/201612/       13/1481596531_714310.jpg)圖片說明

最佳回答:


這個問題比較難,你沒什麼基礎,所以說術語你聽不懂。我就說簡單點:

A a = new B(); 這個裡面涉及到3個東西,就是你問的A a B。

首先A B,這個東西叫做類,比如說,A類,B類,人類,你看,這個A B 其實和 人一樣的。既然一樣,我就拿人來說。

人,分為男人類,女人類。那這個男人類其實就是人類的一個更細致的劃分,我說人包含了男人類,這話沒毛病。

如果你說男人類 包含人類,這話就有毛病了。但是我說到現在都是抽象的,就是都是概念性的東西,
但是你(假設你叫張三並且是個漢子)。你屬於 男人類,你是一個具體的東西,是由抽象的東西(男人類)而來的。

A a = new B();
等價於

人 張三 = new 男人();

翻譯過來就是,你張三是男人,屬於人,你問 A 和 a什麼關系,就等價於 人 和張三是什麼關系,
就是張三是一個實體,實實在在存在的,而人只是描述張三這個實體屬於那種類型的一個說明,就是表示,張三是一個人。

B a= new B() 這個就等價於 男人 張三 = new 男人();

完全可以的,沒毛病,但是為什麼都建議寫成 人 張三 = new 男人();而不建議寫成 男人 張三 = new 男人()呢

比如說你有一個類C,這個類裡面有個方法,
addPerson(人 某某某) 或者 addPerson(男人 某某某)

如果你定義成前面方式,你可以添加男人,也可以添加女人,如果你定義成後面那種,那你只能添加男人。

抽象的東西往往具有不定性,具有靈活性。具體的東西就定死了。

Readiay
gotobat
gotobat
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved