现在碰到一题,是做一个小小的点菜系统,有个问题是:餐馆分VIP和非VIP顾客,VIP顾客结账时打8折。题目要求写代码时要体现继承和多态,我想不到怎么写才能体现这两个技术,特别是多态!其它要求像读取txt文件都会了,只差这一点了,知道的高手帮一下,指点下思路或写段代码给我参考琢磨下!

解决方案 »

  1.   

    继承实现:
    父类:people    子类:commonCustomer和VIPCustomer 继承people     
    至于多态,写几个同名方法。
      

  2.   

    //普通顾客
    public class Customer { public Customer(){

    }
    //付款方式
    public double Pay(double money){
    return money;
    }
    }//VIP继承顾客类
    public class VIP extends Customer {
    public VIP(){

    }
    //重写pay方法
    @Override
    public double Pay(double money) {
    // TODO Auto-generated method stub
    return money*0.8;
    }
    }//客户端
    import java.util.Scanner;public class Test { public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    System.out.print("请输入顾客类型:");
    String type=input.next();
    Customer people=null;

    System.out.print("\n请输入金额:");
    double money=input.nextDouble();
    if(type.equals("顾客")){
    people=new Customer();
    }else{
    people=new VIP();
    }
    System.out.println("\n应付金额:"+people.Pay(money));
    }
    }
      

  3.   

    设计一个接口,将顾客所需要的一般性的方法写在里面,然后再分别写两个类,即vip和非vip类继承这个接口,然后分别实现抽象方法,再设计一个public类,用父类引用指向子类对象操作方法,既多态这个实际上是一个很简单的设计模式的例子,建议看以下设计模式的书:推荐 java与模式 这本书
      

  4.   

    我还是觉得写个“Customer”类,再让“CommonCustomer”和“VipCustomer”继承“Customer”,这样从理论上更能满足老师说的多态的要求。
      

  5.   

    大家好,菜鸟的我刚学到java的多态和继承,还不是太懂接口,我就用继承和方法的重写写了一个小序,如下:
    public class Customer { double money;
    public Customer(double money){
    this.money = money;
    }
    public void fuqian(){
    System.out.println(money);
    }
    public static void main(String[] args) {

    Commoncustomer cp = new Commoncustomer(36);
    Vipcustomer vp = new Vipcustomer(36);
    System.out.println("普通顾客应付帐为:");
    cp.fuqian();
    System.out.println("VIP顾客应付帐为:");
    vp.fuqian();
    }}
    public class Commoncustomer extends Customer {
    public Commoncustomer(double money){
    super( money);
    }
    public static void main(String[] args) {
    Commoncustomer cp = new Commoncustomer(36);
    cp.fuqian();
    }}
    public class Vipcustomer extends Customer {
    public Vipcustomer(double money){
    super(money);
    }
    public void fuqian(){
    System.out.println(money*(0.80));
    }
    public static void main(String[] args) {
    Vipcustomer vp = new Vipcustomer(36);
    vp.fuqian();
    }}
      

  6.   

    楼上的说的都很好了..现在就是讨论该用接口好些还是用继承好些吧?因为这里只是单继承,所以要实现多态的话应该继承和接口都可以实现的.不过这里个人认为还是继承比较好点.! 建议LZ多看点关于OOP的书,会对编程有帮助的.4楼的代码已经很好了.!