大家一定对一道面试题很熟悉:
 Consider the class hierarchy shown below:
     FourWheeler 
(implements DrivingUtilities)
/ / \ \
   /  /   \  \
/   /     \   \
/    /       \    \
   /     /         \     \
Car  Truck        Bus  Crane
Consider the following code below:
1.DrivingUtilities du;
2.FourWheeler fw;
3.Truck myTruck = new Truck();
4.du = (DrivingUtilities)myTruck;
5.fw = new Crane();
6.fw = du;
接着问了几个问题,我不是问答案,
而是我把相应的类都创建了,然后造了个Test类,
把这段代码写进去,结果报了个语法错误,在第3行,删掉第3行就报第2行劳烦大家看看

解决方案 »

  1.   

    这个题目答案是第6行,可我实际做的时候,eclipse就是报第3行语法错,纳闷...
      

  2.   

    我就创建了几个空类,
    public inteface DrivingUtilities{}
    public Abstarct class FourWheeler implements DrivingUtilities{}
    public class Truck extends FourWheeler{
       Truck(){
       }
    }
    public class Crane extends FourWheeler{
       Crane(){
       }
    }public class Test{
     DrivingUtilities du;
     FourWheeler fw;
     Truck myTruck = new Truck();
     du = (DrivingUtilities)myTruck;
     fw = new Crane();
     fw = du;
    }我觉得非常简单,,但是真的不知道哪里出了问题
      

  3.   

    我觉得也好像是第六行fw=du那里的错误
    个人意见
      

  4.   

    我写的时候写的是interface,往这里放的时候弄错了,
    我刚才又在一台机器上实验了一下,还是第3行的错误,
    当然可能不是第3行的错误,是编译器不够智能,
    我非常的郁闷,,刚才还把jdk从5.0换到1.4,
    还是一样.感谢几位费心!
      

  5.   

    public interface DrivingUtilities{}
    public Abstarct class FourWheeler implements DrivingUtilities{}
    public class Truck extends FourWheeler{}
    public class Crane extends FourWheeler{}public class Test{
     DrivingUtilities du;
     FourWheeler fw;
     Truck myTruck = new Truck();
     du = (DrivingUtilities)myTruck;
     fw = new Crane();
     fw = du;
    }
    几位是把这段程序粘贴的自己机器(inteface已经修改为interface)上试的吗?
    没做任何改动?(当然是每个类一个文件)
      

  6.   

    fw = (FourWheeler)du;
    这样就可以了~DrivingUtilities du;这是一个接口~
    fw = du;的时候需要具体化~
    因此,强转一下就可以了~
    fw = (FourWheeler)du;
      

  7.   

    public interface DrivingUtilities{}
    public Abstarct class FourWheeler implements DrivingUtilities{}
    public class Truck extends FourWheeler{}
    public class Crane extends FourWheeler{}public class Test{
     DrivingUtilities du;
     FourWheeler fw;
     Truck myTruck = new Truck();
     du = (DrivingUtilities)myTruck;
     fw = new Crane();
     fw = du;
    }
    几位是把这段程序粘贴的自己机器(inteface已经修改为interface)上试的吗?
    没做任何改动?(当然是每个类一个文件)
      

  8.   

    问题比较低级,让各位费心了,
    bao110908(好没劲~~) 辛苦了,我的问题在于最后test中,不能直接写方法,得在构造函数中写,或main()中写.
    daniel_kaka(卡卡) 说的也没错,是对这道题的解决.
      

  9.   

    把 Test 类中的 6 行,全部放到 public static void main(String[] args) {} 方法体内就可以了,在类范围不允许存在类似第 4~6 行的语句。还有 public Abstarct class FourWheeler implements DrivingUtilities 里面的 Abstarct 写错了,应该是“abstract”。