看来你对多态的理解不够啊
返回的就是process的子类,对象的实际类型是运行期决定的.

解决方案 »

  1.   

    返回的就是process的子类,对象的实际类型是运行期决定的.
    如楼上所说。
      

  2.   

    楼主说你的程序没有报错?不会吧,是p.waitFor();而不是p.waitfor吧
      

  3.   

    但是我看了一下java的库结构,java.lang.Process并没有子类啊,所以waitfor(),destroy()等抽象方法是谁来实现的呢,我就是这个有疑问啊
      

  4.   

    我猜想是java运行时环境提供了一个Process的默认实现;
      

  5.   

    回复人: shaxiren(冰河) ( ) 信誉:100  2004-03-19 11:42:00  得分:0 
     
     
      但是我看了一下java的库结构,java.lang.Process并没有子类啊,所以waitfor(),destroy()等抽象方法是谁来实现的呢,我就是这个有疑问啊
      
     
    请问你是在哪里查的库结构,是javadoc吗?事实上你得到的的确是Process的一个子类,并且它实现了waitfor方法。只不过在你所查的库结构中没有记载而已。
    在你举的例子当中,你并不需要知道这个子类的具体类型,你只需要得到一个某某Process,它能实现Process的所有功能就可以了。比方说:你要招一个秘书,那么人事部门就提供给你一个秘书,只要他能合格的完成秘书的所有任务就可以了,你还去打听人家姓甚名谁,是男是女,是否未婚干什么?
      

  6.   

    记住,以OO的观点,张秘书,李秘书都是秘书,不要以为exec返回的就一定是Process类,返回一个Process的子类是完全合法的。
      

  7.   

    楼主对多态型还是不了解
    加入
    interface A{
    void fun();
    }
    class B implements A{
    public void fun(){}
    }A a = new B();
    a.fun();
      

  8.   

    楼上的道理我是知道的,可是并没有子类来实现Process的方法啊,如果有子类的话,那个子类叫什么名字呢
      

  9.   

    楼主怎么还不明白呢?
    1 这个子类的确是存在的!尽管你不能从库结构中找到它的描述
    2 这个子类叫什么名字和你一点关系都没有,你雇个秘书还要打听人家的私事干什么?
    3 如果你一定想知道的话可以在p.waitfor()前面加一句:System.out.println(p.getClass());