黑马程序员技术交流社区

标题: 抽象方法和抽象类的问题 [打印本页]

作者: 邓飞飞    时间: 2012-4-14 16:54
标题: 抽象方法和抽象类的问题
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();
                                  }
                      }
作者: 陈坚    时间: 2012-4-14 17:08
一个类中如果有抽象方法那么这个类一定是抽象类,应该在类前面加上abstract关键字来修饰,而楼主你的代码我编译过了,会出错的。你看清楚是不是有这样的一回事
作者: 张明星    时间: 2012-4-14 18:27
抽象类可以有抽象方法和非抽象方法(一般的成员方法),但是如果一个类中含有抽象方法,则必须声明为抽象类(当然也可以声明为接口)。
这个类必须是抽象的!
作者: 张一凡    时间: 2012-4-14 18:56
你这段代码错的离谱。
你应该知道的一些关于抽象类的细节:
        1,抽象类中是可以定义非抽象方法的。
        2,抽象类中有构造函数。
        3,抽象类通常都是一个父类。
        4,抽象类中可以不定义抽象方法。
        5,有抽象方法的类就必须定义为抽象类。
        6,abstract关键字不可以和final,static&private关键字共存。
作者: 蒋亮    时间: 2012-4-14 21:18
只要类中含有抽象方法,那么这个类就必须定义为抽象类




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