黑马程序员技术交流社区

标题: 关于抽象类的课外练习 [打印本页]

作者: 李斌    时间: 2012-4-21 16:49
标题: 关于抽象类的课外练习
一个复习抽象类的好题 与大家一起练习:
需求:1.先描述汽车的抽象类,该类有汽车品牌、汽车用油型号、汽车当前油量等几个属性,
同时定义一个加油普通函数和一个开车的抽象方法{:soso_e130:}
2.定义一个商务小车类继承汽车抽象类,
商务小车类有汽车颜色、汽车价格等新属性(其他熟悉可自己添加一两个)。
同时在该类中重写加油、开车两个方法。要求在加油函数中增加汽车当前油量,在开车方法中减少汽车当前油量,并实时打印出当前油量。
作者: 黑马罗坚    时间: 2012-4-21 23:41
  1. package demo.demo;

  2. import demo.demo.Car;
  3. import demo.demo.CarDemo;
  4. import demo.demo.NoValueException;
  5. import demo.demo.NoYouException;
  6. import demo.demo.SWC;

  7. /**
  8. * 一个复习抽象类的好题 与大家一起练习:
  9. 需求:1.先描述汽车的抽象类,该类有汽车品牌、汽车用油型号、汽车当前油量等几个属性,
  10. 同时定义一个加油普通函数和一个开车的抽象方法
  11. 2.定义一个商务小车类继承汽车抽象类,
  12. 商务小车类有汽车颜色、汽车价格等新属性(其他熟悉可自己添加一两个)。
  13. 同时在该类中重写加油、开车两个方法。要求在加油函数中增加汽车当前油量,在开车方法中减少汽车当前油量,并实时打印出当前油量。
  14. * 油箱可装200升
  15. */
  16. abstract class Car {
  17.         private String pingPai,xingHao;
  18.         public String getPingPai() {
  19.                 return pingPai;
  20.         }
  21.         public void setPingPai(String pingPai) {
  22.                 this.pingPai = pingPai;
  23.         }
  24.         public String getXingHao() {
  25.                 return xingHao;
  26.         }
  27.         public void setXingHao(String xingHao) {
  28.                 this.xingHao = xingHao;
  29.         }
  30.         public int getYouLiang() {
  31.                 return youLiang;
  32.         }
  33.         public void setYouLiang(int youLiang) {
  34.                 this.youLiang = youLiang;
  35.         }
  36.         private int youLiang;
  37.         public void jiaYou(int num){
  38.                 youLiang+=num;
  39.         }
  40.         public abstract void run(int gongLi,int yiPaoGongLi)throws NoYouException;
  41.         public Car(){
  42.                
  43.         }
  44.         public Car(String pingPai,String xingHao){
  45.                 this.setPingPai(pingPai);
  46.                 this.setXingHao(xingHao);
  47.                 this.setYouLiang(100);
  48.         }
  49. }
  50. class SWC extends Car{
  51.         private String color;
  52.         private int pay,runGongli;
  53.         public SWC(String pingPai,String xingHao,String color,int pay){
  54.                 super(pingPai,xingHao);
  55.                 this.setColor(color);
  56.                 this.setPay(pay);
  57.         }
  58.         public SWC(){
  59.                
  60.         }
  61.         public String getColor() {
  62.                 return color;
  63.         }
  64.         public void setColor(String color) {
  65.                 this.color = color;
  66.         }
  67.         public int getPay() {
  68.                 return pay;
  69.         }
  70.         public void setPay(int pay) {
  71.                 this.pay = pay;
  72.         }
  73.         public void jiaYou(int num){
  74.                 this.setYouLiang(this.getYouLiang()+num);
  75.                 System.out.println("已加油"+num+"升");
  76.         }
  77.         public void run(int gongLi,int yiPaoGongLi)throws NoYouException{
  78.                 for(int i=0;i<gongLi;i++){
  79.                         if(this.getYouLiang()<8){
  80.                                 throw new NoYouException("车油量不足,已跑公里"+yiPaoGongLi);
  81.                         }
  82.                         //没跑一公里耗费8升油
  83.                         this.setYouLiang(this.getYouLiang()-8);       
  84.                         runGongli++;
  85.                         yiPaoGongLi++;
  86.                 }
  87.                 System.out.print(this.getPay()+"商务车:"+this.getColor()+this.getPingPai()+this.getXingHao()
  88.                                 +"已跑"+runGongli+"公里"+"还剩"+this.getYouLiang()+"升油");
  89.         }
  90. }
  91. class NoYouException extends Exception{
  92.         public NoYouException(){
  93.                 super("车油量不足");
  94.         }
  95.         public NoYouException(String message){
  96.                 super(message);
  97.         }
  98. }
  99. class NoValueException extends RuntimeException{
  100.         public NoValueException(){
  101.                 super("已跑距离大于为跑距离");
  102.         }
  103. }
  104. public class CarDemo{
  105.         SWC car=null;
  106.         public static void main(String[] args) {
  107.                 new CarDemo().run(30,0);
  108.         }
  109.         public void run(int gongLi,int yiPaoGongLi){
  110.                 if(yiPaoGongLi>gongLi){
  111.                         throw new NoValueException();
  112.                 }
  113.                 if(car==null){
  114.                         car=new SWC("兰博基尼","LF23","黑色",1000000);
  115.                 }
  116.                 car.jiaYou(100);
  117.                 try {
  118.                         car.run(gongLi, yiPaoGongLi);
  119.                 } catch (NoYouException e) {
  120.                         String str=e.getMessage();
  121.                         str=str.substring(str.indexOf("里")+1, str.length());
  122.                         yiPaoGongLi=Integer.parseInt(str);
  123. //                        System.out.println(yiPaoGongLi);
  124.                         gongLi-=yiPaoGongLi;
  125.                         yiPaoGongLi=0;
  126.                     run(gongLi,yiPaoGongLi);       
  127.                 }
  128.         }
  129. }
复制代码

作者: 马伟恒    时间: 2012-4-21 23:45
楼上的哥们超神了已经,膜拜啊
作者: 李斌    时间: 2012-4-22 17:02
提了那么多问题 怎么没计算分啊 {:soso_e101:}。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2