abstract class vehicle{
          abstract int getFuel();
}
 class car extends vehicle{
          int getFuel(){
 return 3;
 }
}
 class bus extends vehicle{
     int getFuel(){
 return 8;   
         }
}
class company{
      vehicle [] fleet;
  fleet[0]=new car();
  fleet[1]=new car();
  fleet[2]=new bus();
  fleet[3]=new car();
  void reportFuel (){
  int fuel=0;
  for (int i=1;i<fleet.length;i++ ){
               fuel+=fleet[1].getFuel();
  }
  System.out.println(fuel);
  }
  
  public static void main(String args[]){
           company a=new company();
   a.reportFuel();
  }
}
那位达人帮我把这个程序该正确下吧,这是自己写的,但是很多东西不知道用的对不。

解决方案 »

  1.   


    package csdn;abstract class vehicle{
        abstract int getFuel();
    }
    class car extends vehicle{
        int getFuel(){
           return 3;
       }
    }
    class bus extends vehicle{
       int getFuel(){
           return 8;   
       }
    }
    public class company{
    vehicle [] fleet = new vehicle[4];
    {
    fleet[0]=new car();
    fleet[1]=new car();
    fleet[2]=new bus();
    fleet[3]=new car();
    }
    void reportFuel (){
        int fuel=0;
        for (int i=0;i<fleet.length;i++ ){
             fuel+=fleet[i].getFuel();
        }
        System.out.println(fuel);
    }public static void main(String args[]){
         company a=new company();
         a.reportFuel();
    }
    }
      

  2.   

    谢谢anqini大哥了,还有个问题就是初始化数组的时候可以不写维数吗?就象
    vehicle [] fleet = new vehicle[];
    {
        fleet[0]=new car();
        fleet[1]=new car();
        fleet[2]=new bus();
        fleet[3]=new car();
    }
      

  3.   

    呵呵 明白了 可以这样写
    vehicle [] fleet ={new car(),new car(),new bus(),new car()};
      

  4.   


    能解释下这段么?vehicle [] fleet=new vehicle[4];
    {
        fleet[0]=newcar();
        fleet[1]=newcar();
        fleet[2]=newbus();
        fleet[3]=newcar();
    }问题一、vehicle不是抽象的么,为什么用new 
    问题二、直接用{//代码}  这重写法好像没用过
    有用过static{}  
    呵呵,本人不才,希望高人指点
      

  5.   


    问题一、vehicle不是抽象的么,为什么用new  
    问题二、直接用{//代码}  这重写法好像没用过 
    有用过static{}   问题一:是实例化数组,不是实例化此抽象类!意思就是继承这个抽象类的所有子类都可以放这个数组里,也就是向上转型
    问题二:{}里的代码跟重写没关系吧,就是非静态块代码,static 有它对应的static代码块,not static 有它对应的not static代码块