抽象类

来源:互联网 发布:冒险岛079数据库 编辑:程序博客网 时间:2024/05/14 09:32

抽象类作为数据类型,创建一个抽象类型的数组:

abstract class Fruit{};

new Fruit[10];

这时抽象类Fruit并没有创建对象,即没有实例化

抽象类可以有构造方法,接口中不能有构造方法。

抽象:abstract

 1、特点:
  1)抽象类不能实例化
  2)一定存在子类,待子类实例化
  3)抽象类一定存在构造器,符合子类实例化规则
  4)不能使用final 
  5)可能存在抽象方法:抽象方法:存在由abstract修饰的方法,没有方法体
 2、与具体类的区别
 1)、具体类:属性、常量、构造器、具体方法、构造块、静态块
 2)、抽象类:属性、常量、构造器、具体方法、构造块、静态块、抽象方法  
 二、抽象类与抽象方法的关系
 1、抽象类可以没有抽象方法
 2、抽象方法一定存在于抽象类中
 三、抽象类与子类
 1、抽象子类:按需实现抽象方法,其他非抽象方法按需重写
   待子孙类实现,继承链上相同的抽象方法,实现一次即可
 2、具体子类:必须实现抽象方法,其他非抽象方法按需重写 
 实现抽象方法:必须符合重写规则
四、抽象类:模板(实现+抽象) -->部分抽象
 抽象、规范:规定子类必须实现 
 模板模式|钩子模式|函数的回调

例:public abstract class Animal {
        public abstract void breath();
        public abstract void run();
        public abstract void jum();
}

五、子类实例化的时候会调用它父类的默认构造方法,抽象类可以有构造方法,构造方法不可继承,但是可以供子类用super()或者super(参数,参数……)调用。

构造方法的作用是初始化对象

局部变量没有默认值,没有初始化就不能使用,否则throws NullPointerException

0 0