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

Java Number 抽象父類的存在意義:統一數值類型的多態入口

     編輯:程式設計綜合問答

八大包裝類(Integer、Double 等)雖各自提供 intValue()、doubleValue() 等轉換方法,但 Number 抽象類的核心價值在於提供統一的父類型引用。

經典場景

// 無 Number 時:需重載多個方法
void process(Integer i) { ... }
void process(Double d) { ... }
void process(Long l) { ... }

// 有 Number:單一方法處理所有數值
void process(Number n) {
    double val = n.doubleValue(); // 統一轉 double 計算
    // ...
}
process(10);      // 自動裝箱 Integer
process(3.14);    // 自動裝箱 Double
process(100L);    // 自動裝箱 Long

設計模式體現

  • 里氏替換原則:子類型可替換父類型
  • 模板方法:Number 定義抽象轉換協議,具體子類實現
  • 集合存儲:List<Number> 可混合存放整數、浮點數

Object 之上的必要性

Object 過於通用,無數值語義;Number 縮小契約範圍,提供 byteValue()~doubleValue() 六大標準轉換協議,是「數值」概念在類型系統中的最小公約數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved