的InputStream類的系統類可以如何包含「在」的InputStream類的對象?實例抽象類InputStream
1
A
回答
2
這是因爲in
不是一個對象,它是一個參考。
它對InputStream或InputStream的子類的引用。作爲它的抽象,它只能是一個子類。
1
InputStream
一個是抽象的,但是具體的類(由System.in
實際引用的一個)可以是InputStream的任何亞類,包括anonymous class。
在javadoc for InputStream
列出的某些亞類包括:
- 的AudioInputStream
- ByteArrayInputStream進行
- 的FileInputStream
- FilterInputStream中
- 的InputStream(CORBA)
- ObjectInputStream的
- PipedInp utStream
- 的SequenceInputStream
- 的StringBufferInputStream
執行此代碼,以找出哪些子System.in實際是:
System.out.println(System.in.getClass());
息率這樣的回答:
class java.io.BufferedInputStream
+0
我還要指出'in'不是一個對象,而是一個參考。 – 2012-02-06 15:33:57
2
由System
類定義的in
場並不需要引用的具體實現的InputStream
- 因爲你已經制定出來的,它不能 - 它只是需要引用一些延伸InputStream
。
至少在Linux上,in
引用了一個本身包裝FileInputStream的BufferedInputStream。其他實現可能會有所不同,這就是要點:使用像InputStream這樣的抽象類允許實現類改變,並可能從一個Java版本更改爲下一個版本,同時保持調用代碼的快樂。
相關問題
- 1. 抽象類實例
- 2. 實例化的抽象類
- 3. 抽象類實例化
- 4. 實例化的抽象類
- 5. 實例化Java抽象類?
- 6. scala:抽象類實例化?
- 7. 抽象類實例化內部類
- 8. 實例化的內抽象類另一抽象類
- 9. C++ - 無法實例化抽象類
- 10. Proguard,Android和抽象類實例化
- 11. 無法實例化抽象類
- 12. C# - 實際例子 - 抽象類
- 13. 如何實例化抽象類c#?
- 14. Java抽象類「實例變量」
- 15. 無法實例抽象類「base.CreditCard」
- 16. PyXB:無法實例化抽象類型
- 17. 無法創建抽象類的實例
- 18. 防止抽象類實例化
- 19. 「無法實例化抽象類」錯誤
- 20. 動態實例化抽象子類
- 21. 爪哇 - 動態實例化抽象類
- 22. 抽象類中的實例化
- 23. 實例化問題通過抽象類
- 24. C++不能實例化抽象類
- 25. 抽象案例類
- 26. 不能實例化抽象類,因爲成員是抽象的
- 27. InputStream和OutputStream抽象方法
- 28. 如何讓抽象類「DocumentBuilderFactory」允許實例化新實例
- 29. 沒有錯誤,而實例化抽象類,雖然抽象方法未實現
- 30. 類型錯誤:無法實例抽象類<...>與抽象方法
一個非常非常常見的問題... – 2012-02-06 15:32:11