A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 掉了一地.. 中级黑马   /  2015-2-1 14:08  /  1147 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


抽象类产生:
    比如犬类事务,都具备吼叫的功能,但是叫声却不一样,叫声则是由具体的子类来赋予的,那么这时功能不具体,但是却相似的功能,需要在父类中标示出来,则通过java中关键字:abstact(抽象)。
        abstract void 吼叫();//抽象函数,需要abstract修饰,并用分号结束。定义了抽象函数的类也必须用abstract修饰。被abstract修饰的则称为抽象类!

抽象类:
     描述事物是,没有足够的信息描述一个事物,功能不确定,则可以使用抽象类。此事务则就是抽象事务。
抽象类特点:
    1.抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在被abstract修饰的类中。
    2.抽象类不可以创建实例,原因:调用抽象方法没有意义。
    3.只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。否则该子类还是一个抽象类。
    4.之所以继承,更多的是在思想,是面对共性类型操作才会更简单。
抽象类—细节问题:
   1,抽象类一定是个父类,(除了object外),因为是不断抽取出来的。
   2,抽象类中有构造函数,有默认为空参的函数。虽然不能给自己的对象初始化但是可以给自己的子类对象初始化。
      抽象类和一般类的异同点:
          相同:都是用来描述事务,他们之中都可以定义属性和行为。
          不同:一般类可以是具体的描述事务,抽象类描述事务的信息不具体。抽象类中可以多定义一个成员,叫做抽象函数。一般类可以创建对象,而抽象类不能创建对象,必须有子类完成创建,而且要把所有的抽象方法覆盖掉。
   3.抽象类中可以不定义抽象方法,这样仅仅是不让该类的对象呗创建。
   4.抽象关键字abstract不可以和哪些关键字共存:       
      1.final,fianl修饰的类不可能产生子类,而抽象类必须有子类。
      2.private 抽象方法要被覆盖,加上私有则子类不知道怎么覆盖。
      3.static 静态随着类的加载而加载,private不能直接创建对象。
   
abstract例子:
abstract class Employee
{
        private String name;
        private String id;
        private double pay;
        /**
        构造一个员工对象,一初始化就具备着三个属性。
        */
        public Employee(String name,String id,double pay)
        {
                this.name = name;
                this.id = id;
                this.pay = pay;
        }
        /**
        工作行为。
        */
        public abstract void work();
}
//具体的子类:程序员。
class Programmer extends Employee
{
        public Programmer(String name,String id,double pay)
        {
                super(name,id,pay);
        }
        public void work()
        {
                System.out.println("code....");
        }
}
//具体的子类:经理。
class Manager extends Employee
{
        //特有属性。
        private double bonus;
        public Manager(String name,String id,double pay,double bonus)
        {
                super(name,id,pay);
                this.bonus = bonus;
        }
        public void work()
        {
                System.out.println("manage");
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马