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

Java 抽象類 OutputStream 為何可直接調用 write 方法?

     編輯:程式設計疑難解答

誤區澄清

OutputStream 是抽象類,**不能直接 `new OutputStream()` 實例化**,但**可以通過多態持有其子類實例並調用抽象方法**。

代碼分析

OutputStream os = socket.getOutputStream(); // 返回 SocketOutputStream (OutputStream 子類)
os.write("加油".getBytes()); // 調用子類實現的 write(byte[])
  • Socket.getOutputStream() 返回具體實現類(如 SocketOutputStream)的實例。
  • 編譯時類型為 OutputStream,運行時動態分派到子類的 write() 實現。
  • 這正是**面向抽象編程**的核心:依賴抽象類型,運行時綁定具體實現。

關鍵概念

  • 抽象類:定義契約(抽象方法),不可實例化,但可作為引用類型。
  • 多態:父類引用指向子類對象,調用被重寫的方法執行子類邏輯。
  • 工廠模式:getOutputStream() 即工廠方法,屏蔽具體創建細節。

總結

不實例化抽象類 ≠ 不能調用其方法。**只要拿到子類實例(由 API 返回),即可通過抽象類型引用調用其定義的方法**。

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