抽象也是Ja va的四大特征之一,如果类可以被实例化成具体的对象,这个类就是具体类,反之抽象类是指不能被实例化的类.在抽象类中,类的所有其他功能都存在,成员变量,方法,构造器等都可以用同样的方式访问,仅仅是不能创建抽象类的实例(对象),他是专门做继承的.
在Java中,使用关键字abstract来声明抽象类.关键字abstract可以出现在类声明时class关键字前的任何地方.抽象类的引用指向实现来的对象.
类中也可以包含一个特定的方法,该方法的实际实现由子类决定,在父类中将该方法声明为抽象方法.抽象方法也是使用abstract关键字来声明.他只有方法签名,没有方法体.即没有大括号.抽象方法主要是让子类继承父类的抽象方法时要强制重写.将一个方法声明为抽象方法有两个结果:
类也必须声明为抽象类;
任何子类必须重写抽象方法,除非该子类本身也是抽象的.如:
public abstract class Employee{ //抽象类
private String name;
private int number;
public abstract double compute(); //抽象方法
}
总之,抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类.
以下主要总结以下abstract,static,final三个特殊 关键字的用法:
abstract(抽象的): 主要是修饰类和方法, 并且abstract修饰的类要求有子类,父类不能实例化对象;
static(静态的): 主要是修饰属性和方法, 并且static修饰后直接通过类名.格式来调用属性和方法;
final(最终的): 主要修饰类,属性和方法. 并且final修饰的类要求不能有子类,可以该类能产生对象.