我发现自己学的小块的东西是很简单,每当自己实践操作的时候总是有各种各样的问题。
就做这个简单的答答租车系统时,用到了面向对象得三大特性封装、继承、多态。使用父类的引用指向子类对象。
package com.mjy;
import java.util.Scanner;
public class Instial {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("欢迎使用答答租车系统:\n您是否要租车:1是 0否\n");
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
if (m==1){
int sumr = 0;
double sumh = 0;
int rentm1=0;
int rentm2=0;
Car []cars={new Aodi(1,"奥迪",500,4),new Mazida(2,"马自达6",400,4),new Pica(3,"皮卡雪6",450,4,2),
new Jinlong(4,"金龙",800,20),new Songhuajiang(5,"松花江",400,4),new Yiwk(6,"依维柯",1000,20)};
System.out.println("您可租车的类型及其价目表:");
System.out.println("序号\t汽车名称\t租金\t容量");
for(int nc=0;nc<cars.length;nc++){
cars[nc].show();
}
System.out.println("请输入您要租车的数量:");
Scanner scanner2=new Scanner(System.in);
int n=scanner2.nextInt();
int []cnum=new int[n];
for(int i = 0;i<n;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号:");
Scanner s1=new Scanner(System.in);
cnum[i]=s1.nextInt();
}
System.out.println("请输入租车天数:");
Scanner s2=new Scanner(System.in);
int t=s2.nextInt();
System.out.println("您的账单:");
System.out.println("***可载人的车有:");
for(int j=0;j<n;j++){
if(cars[cnum[j]-1].zair!=0){
sumr = cars[cnum[j]-1].zair+sumr;
rentm1 = cars[cnum[j]-1].rent*t+rentm1;
System.out.print(cars[cnum[j]-1].name+"\t");
}
}
if(sumr==0){
System.out.println("没有租客车!!!");
}else{
System.out.println("共载人:"+sumr);
}
System.out.println("***可载货的车有:");
for(int j=0;j<n;j++){
if(cars[cnum[j]-1].zaih!=0){
sumh = cars[cnum[j]-1].zaih+sumh;
rentm2 = cars[cnum[j]-1].rent*t+rentm2;
System.out.print("\t"+cars[cnum[j]-1].name+"\t");
}
}
if(sumh==0){
System.out.println("没有租货车!!!");
}else{
System.out.println("共载货:"+sumh);
}
System.out.println("***租车总价格:"+(rentm1+rentm2)+"元");
}else{
System.exit(0);
}
}
}
public class Aodi extends Car {
public Aodi(int num,String name,int rent,int zair){
this.num=num;
this.name=name;
this.rent=rent;
this.zair=zair;
}
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println(num+".\t"+name+"\t"+rent+"元/天"+"\t"+"载人:"+zair);
}//为什么这个show()可以用上边赋予的值呢???
}
public abstract class Car {
int num;
String name;
int rent;
int zair;
double zaih;
public abstract void show();
}