Topic: java中为什么会直接使用抽象类的对象,直接调用抽象的方法

  Print this page

1.java中为什么会直接使用抽象类的对象,直接调用抽象的方法 Copy to clipboard
Posted by: forrest_gump
Posted on: 2005-04-28 15:07

java书中说到抽象类是不能直接创建对象的,而抽象方法也是空方法,没有具体实现,都需要子类继承并实现它。但在java中却有很多直接使用抽象类和抽象方法的地方。如:
System.in.read()这个方法来获取键盘输入,这里的System.in是一个InputStream类,API说明中它是抽象的,但为什么这里能直接使用,而且这个read()方法也是抽象的,这里也直接调用了,而且完成了所需要的功能,这是怎么一回事。哪位大虾指点一下。

2.Re:java中为什么会直接使用抽象类的对象,直接调用抽象的方法 [Re: forrest_gump] Copy to clipboard
Posted by: danzel
Posted on: 2005-04-28 17:21

请找到System的源代码,然后看方法:initializeSystemClass()中的这一行:
setIn0(new BufferedInputStream(fdIn));

应该是在这里的native方法中设置的InputStream()

3.Re:java中为什么会直接使用抽象类的对象,直接调用抽象的方法 [Re: forrest_gump] Copy to clipboard
Posted by: 铁针
Posted on: 2005-04-28 18:05

danzel 老大给你指了一条路,还不赶紧谢谢老大的英明?!

4.Re:java中为什么会直接使用抽象类的对象,直接调用抽象的方法 [Re: danzel] Copy to clipboard
Posted by: forrest_gump
Posted on: 2005-04-29 10:17

我查看过这些源代码,但还是不大明白,包括那个IO包中的read()方法,明明是申明的为abstract方法,而且是空的没有任何代码,但注释中却说明了它的功能。那这个abstract方法就不是空实现了,而是实现了某种功能的,这倒底是怎么回事呢,能不能用通俗的语言解释一下,多谢了。

5.Re:java中为什么会直接使用抽象类的对象,直接调用抽象的方法 [Re: forrest_gump] Copy to clipboard
Posted by: mesocool
Posted on: 2005-04-29 15:18

because it is a static method, you don't have to initialize it before using it...


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923