首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 多態核心概念通俗解析:父類引用指向子類對象的意義與優勢

     編輯:程式設計疑難解答

經典提問

A a = new B();

這個 a 到底是 A 的對象還是 B 的對象?為什麼不直接寫 B a = new B()?

生活類比:人與男人

  • A 類 = 人類:抽象概念,定義公共屬性/行為(姓名、吃飯、睡覺)。
  • B 類 = 男人類:人類的細化,增加特有屬性/行為(鬍子、刮鬍子)。
  • 對象 = 具體個體:張三,是一個男人,也是一個人。

人 張三 = new 男人(); 翻譯為:張三是男人,屬於人類。

三者關係

符號含義類比
A父類/接口類型人(抽象分類)
B子類/實現類類型男人(具體分類)
a引用變量張三(具體個體標識)

為什麼要用父類類型聲明?

// 靈活性示例
void addPerson(Person p) { ... } // 參數類型為父類
addPerson(new Man());   // 可傳男人
addPerson(new Woman()); // 可傳女人

// 若聲明為 Man man = new Man();
void addMan(Man m) { ... } // 只能傳男人,擴展性差

核心優勢

  1. 面向接口編程:依賴抽象而非具體實現。
  2. 運行時多態:同一調用 p.eat(),不同子類表現不同行為。
  3. 解耦:高層模組不依賴低層模組細節。

何時用子類類型聲明?

只在需要調用子類特有方法、且確定不再擴展其他子類的局部代碼中。

「抽象的東西往往具有不定性,具有靈活性。具體的東西就定死了。」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved