为了账号安全,请及时绑定邮箱和手机立即绑定

我是小白,参考别人自己写的,求更简洁的

package ZhuCheXiTong;
 //定义抽象车的父类
 public abstract class Car {  
  public int id;           //定义车辆序号  
  public String name;      //车辆的名称   
  public double price;     //定义价格   
  public int busload;      //载客量   
  public int weigth;       //载重量
  public int getId() {        //封装对象	
        return id;
  }
  public void setId(int id) {
  	this.id = id;
  }
  public String getName() {	
        return name;
  }
  public void setName(String name) {
  	this.name = name;
  }
  public double getPrice() {
  	return price;
  }
  public void setPrice(double price) {	
        this.price = price;
  }
  public int getBusload() {
  	return busload;
  }
  public void setBusload(int busload) {	
        this.busload = busload;
  }
  public int getWeigth() {	
        return weigth;
  }
  public void setWeigth(int weigth) {
  	this.weigth = weigth;
  }
  public Car(){                  //无参构造	
    } 
  public Car(int id,String name,double price,int busload,int weigth){	 
    this.id=id;  	   
    this.name=name;              //有参构造	  
    this.price=price;	   
    this.busload=busload;	  
    this.weigth=weigth;
     }   
  public abtract void show();      //定义抽象方法}
     //定义可以载人的车
  class Busload extends Car{	
  public Busload(){		//无参构造	}	
  public Busload(int id,String name,double price,int busload){
  // super();		
  this.id=id;  		
  this.name=name;		
  this.price=price;		
  this.busload=busload;	
  }	
  public void show(){		
  System.out.println(id+"\t"+name+"\t"+price+"元/天  "+"\t载人:"+busload+"人");	
  }
  }
  //定义可以载货的车
  class Weigth extends Car{	
  public Weigth(){			}	
  public Weigth(int id,String name,double price,int weigth){
  //		super();		
     this.id=id;		
     this.name=name;		
     this.price=price;		
     this.weigth=weigth;	
  }	
  public void show(){		
  System.out.println(id+"\t"+name+"\t"+price+"元/天  "+"\t载货:"+weigth+"吨");	
  }
  }
  //定义即可载人也可以载货
  class Pick extends Car{	
  public Pick(){			}	
  public Pick(int id,String name,double price,int busload,int weigth){		
  super(id,name,price,busload,weigth);     //直接使用父类的变量
  //		this.id=id;
  //		this.name=name;
  //		this.price=price;       
  //		this.busload=busload;
  //		this.weigth=weigth;	
  }	
  public void show(){		
  System.out.println(id+"\t"+name+"\t"+price+"元/天  "+"\t载人:"+busload+"人"+",载货:"+weigth+"吨");	
  }
  }
  
  package ZhuCheXiTong;
  import java.util.Scanner;
  //测试租车系统
  public class Test {	
  public static void main(String[] args) {		
  // TODO Auto-generated method stub      
  Car[] car=    	 
   {    		 
   new Busload(1,"奥迪A4",500,4),    		
   new Busload(2,"马自达",400,4),    		
   new Pick(3,"皮卡雪",450,4,2),    		 
   new Busload(4,"金龙",800,20),    		 
   new Weigth(5,"松花江",400,4),    		 
   new Weigth(6,"依维柯",1000,20),          
   };        
   double sumprice=0;        
   int sumbusload=0;        
   int sumweigth=0;        
   Scanner in=new Scanner(System.in);        
   System.out.println("欢迎使用嗒嗒租车系统:\n你是否要租车:1-是   0-否");        
   int number=in.nextInt();        
   if(number==1){        
   System.out.println("可供选择的车型有:");        
   System.out.println("序号\t汽车名称\t租金\t\t容量");       
    for(Car cr:car){        	
    cr.show();     //遍历所有的车情况       
    }            
    System.out.println("请你输入要租汽车的数量:");       
    int num=in.nextInt();        
    int flag;  
    int ID[]=new int[num];  //用于存储车的序号      
    for(int i=0;i<num;i++){        	
    System.out.println("请输入第"+(i+1)+"个车辆的序号:");            
    flag=in.nextInt();        	
    if(flag>6||flag<0){                       
      //防止出入超出车序号的车        		
    System.out.println("你输入的车序号有误!");                  		
    System.out.println("请输入第"+(i+1)+"个车辆的序号:");            	
    flag=in.nextInt();        	
    }        	       	 
    sumprice=sumprice+car[flag-1].price;      //选了多少辆计算每辆车和的价钱   
    ID[i]=flag;       //获取要的车序号    
    }        
    System.out.println("请你输入要租汽车的天数:");        
    int ff=in.nextInt();        
    System.out.println("统计完成正在生成你的账单\n你的账单如下:\n***可载人的车有***");        
    for(int i=0;i<num;i++){        	
    if(car[ID[i]-1].busload!=0){        		
    sumbusload=sumbusload+car[ID[i]-1].busload;      //计算能载多少人        		
    System.out.print("\t"+car[ID[i]-1].name);        
    	}        
    	}        
    System.out.println("\t\t共载"+sumbusload+"人");       
    System.out.println("***可载货的车有***");       
     for(int i=0;i<num;i++){        	
     if(car[ID[i]-1].weigth!=0){       //判断只要是载货不为0就可以载货        		
     sumweigth=sumweigth+car[ID[i]-1].weigth;        //计算能载多少货        		
     System.out.print("\t"+car[ID[i]-1].name);        	
     }       
      }       
       System.out.println("\t\t共载"+sumweigth+"吨");                
       System.out.println("***租出车总价格为:"+sumprice*ff);       
       }        
       else{        	
       System.out.println("退出系统!希望你下次能用租车系统!");       
        }	
        }  
           }


正在回答

5 回答

package com.imooc;

import com.imooc.Car;



import java.util.Scanner;


public class Home {


  //测试租车系统 

  public static void main(String[] args) {      

  // TODO Auto-generated method stub      

  Car[] car=      

   {          

   new Busload(1,"奥迪A4",500,4),        

   new Busload(2,"马自达",400,4),         

   new Pick(3,"皮卡雪",450,4,2),            

   new Busload(4,"金龙",800,20),           

   new Weigth(5,"松花江",400,4),            

   new Weigth(6,"依维柯",1000,20),          

   };  

 

   double sumprice=0;        

   int sumbusload=0;        

   int sumweigth=0;        

   Scanner in=new Scanner(System.in);        

   System.out.println("欢迎使用嗒嗒租车系统:\n你是否要租车:1-是   0-否");        

   int number=in.nextInt();        

   if(number==1){        

   System.out.println("可供选择的车型有:");        

   System.out.println("序号\t汽车名称\t租金\t\t容量");       

    for(Car cr:car){          

    cr.show();     //遍历所有的车情况       

    }            

    System.out.pr


intln("请你输入要租汽车的数量:");       

    int num=in.nextInt();        

    int flag;  

    int ID[]=new int[num];  //用于存储车的序号      

    for(int i=0;i<num;i++){        

    System.out.println("请输入第"+(i+1)+"个车辆的序号:");            

    flag=in.nextInt();         

    if(flag>6||flag<0){                       

      //防止出入超出车序号的车              

    System.out.println("你输入的车序号有误!");                        

    System.out.println("请输入第"+(i+1)+"个车辆的序号:");            

    flag=in.nextInt();         

    }                     

    sumprice=sumprice+car[flag-1].price;      //选了多少辆计算每辆车和的价钱   

    ID[i]=flag;       //获取要的车序号    

    }        

    System.out.println("请你输入要租汽车的天数:");        

    int ff=in.nextInt();        

    System.out.println("统计完成正在生成你的账单\n你的账单如下:\n***可载人的车有***");        

    for(int i=0;i<num;i++){        

    if(car[ID[i]-1].busload!=0){               

    sumbusload=sumbusload+car[ID[i]-1].busload;      //计算能载多少人               

    System.out.print("\t"+car[ID[i]-1].name);        

        }        

        }        

    System.out.println("\t\t共载"+sumbusload+"人");       

    System.out.println("***可载货的车有***");       

     for(int i=0;i<num;i++){          

     if(car[ID[i]-1].weigth!=0){       //判断只要是载货不为0就可以载货               

     sumweigth=sumweigth+car[ID[i]-1].weigth;        //计算能载多少货            

     System.out.print("\t"+car[ID[i]-1].name);        

     }       

      }       

       System.out.println("\t\t共载"+sumweigth+"吨");                

       System.out.println("***租出车总价格为:"+sumprice*ff);       

       }        

       else{        

       System.out.println("退出系统!希望你下次能用租车系统!");       

        }  

        }  

           }



0 回复 有任何疑惑可以回复我~
#1

LMH300913

为什么我的程序报错 Busload cannot be resolved to a type Weigth cannot be resolved to a type
2019-08-16 回复 有任何疑惑可以回复我~
#2

LMH300913

把子类单独建class文件放进去就不报错了 和父类写在一起就报错
2019-08-16 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5d327df20001727304680196.jpg请问这一段是匿名内部类吗?

0 回复 有任何疑惑可以回复我~

请问这里面的无参构造方法的作用是什么?

0 回复 有任何疑惑可以回复我~
#1

qq_慕标3598189

如果你的子类中构造函方法,没有使用super来继承父类,那么你需要在父类中写一个无参构造方法。因为子类会自动调用父类的构造方法。如果你在子类中用super来继承,而且不是自动继承,那么你就不需要再父类中写一个无参构造方法。
2019-07-21 回复 有任何疑惑可以回复我~

private被继承到子类后是无效的,子类可以进行修改使用

0 回复 有任何疑惑可以回复我~

car类里面的属性用private会比较好(java封装的特性)

0 回复 有任何疑惑可以回复我~
#1

廖____

说错了,private被继承过去后子类没法使用
2019-07-18 回复 有任何疑惑可以回复我~
#2

廖____

但是用public感觉就不用get和set方法,好像多此一举。个人理解不知道对不对
2019-07-18 回复 有任何疑惑可以回复我~
#3

学飞奋斗的小鸟 提问者 回复 廖____

是的,这只是为了使用熟悉一下封装,其实是可以不写的
2019-07-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

我是小白,参考别人自己写的,求更简洁的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信