黑马程序员技术交流社区

标题: 抽象类的一个例子调试不出来 [打印本页]

作者: 邓飞飞    时间: 2012-4-14 17:00
标题: 抽象类的一个例子调试不出来
class Employee
            {
                  private string name;
                  private string id;
                  private double pay;
                   Employee(string name,string id,double pay)
                      {
                            this.name=name;
                            this.id=id;
                             this.pay=pay;
                      }
                   public abstract void work();
              }
            class Manager extends Employee
              {
                private int bonus;
                Manager(string name,string id,double pay,int bonus)
                        {
                           super(name,id,pay);
                            this.bonus=bonus;
                         }
                 public void work()
                    {
                          System.out.println("manager work");
                      }
              }
             class Pro extends Employee
               {
                   class Pro(string name,string id,double pay)
                        {
                           super(name,id,pay);
                         }
                   public void work()
                       {
                             System.out.println("Pro work");
                        }
                 }
                public class  AbstactDemo
                      {

                         public static void main(String[] args)
                                {
                                Manager man=new Manager(zhansan,01,100.00,400 );
                                    Pro p=new Pro(lisi,05,200.00);
                                    man.work();
                                    p.work();
                                  }
                      }
我在编译时,AbstractDemo.java:29: 错误: 需要'{'
                   class Pro(string name,string id,double pay)
                            ^
AbstractDemo.java:29: 错误: 需要';'
                   class Pro(string name,string id,double pay)
                                                             ^
AbstractDemo.java:48: 错误: 进行语法分析时已到达文件结尾
                      }

作者: 陈扬    时间: 2012-4-14 17:27
你的代码有很多问题哦。比如:String类写成了小写string,构造方法加多了class关键字,还有就是你定义的class Employee类里面有抽象方法,但是你的类没有改成抽象类:
改过的代码如下:
  1. abstract class Employee {
  2.         private String name;
  3.         private String id;
  4.         private double pay;

  5.         Employee(String name, String id, double pay) {
  6.                 this.name = name;
  7.                 this.id = id;
  8.                 this.pay = pay;
  9.         }

  10.         public abstract void work();
  11. }

  12. class Manager extends Employee {
  13.         private int bonus;

  14.         Manager(String name, String id, double pay, int bonus) {
  15.                 super(name, id, pay);
  16.                 this.bonus = bonus;
  17.         }

  18.         public void work() {
  19.                 System.out.println("manager work");
  20.         }
  21. }

  22. class Pro extends Employee {
  23.         Pro(String name, String id, double pay) {
  24.                 super(name, id, pay);
  25.         }

  26.         public void work() {
  27.                 System.out.println("Pro work");
  28.         }
  29. }

  30. public class AbstactDemo {

  31.         public static void main(String[] args) {
  32.                 Manager man = new Manager("zhansan", "01", 100.00, 400);
  33.                 Pro p = new Pro("lisi", "05", 200.00);
  34.                 man.work();
  35.                 p.work();
  36.         }
  37. }
复制代码

作者: 韩新凯    时间: 2012-4-15 23:37
1.把Employee定义成抽象类,把string都改成String。
2.把Pro的构造函数前面的class去掉。
3.把主函数public static void main(String[] args)
                    {
                    Manager man=new Manager("zhansan","01",100.00,400 );
                        Pro p=new Pro("lisi","05",200.00);
                        man.work();
                        p.work();
                      }
里面Manager man=new Manager("zhansan","01",100.00,400 );和Pro p=new Pro("lisi","05",200.00);
前两个值加“”,它们是String类型的。
改好就对了,试过了,成功运行。




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