final
使用对象:类、方法、字段、变量
介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值
不允许被修改。
private static方法自然是final。
abstract
使用对象:类、接口、方法
介绍:类中包括没有实现的方法,不能被实例化。如果是一个abstract方法,则方法体 为空,该方
法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类
1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类;
2,抽象类中可以有具体的实现方法;
3,抽象类中可以没有抽象方法;
4,抽象类中的抽象方法必须被它的子类实现,如果子类没有实现,则该子类继续为抽象类
5,抽象类不能被实例化,但可以由抽象父类指向的子类实例来调用抽象父类中的具体实现方法;通常作为一种默认行为;
6,要使用抽象类中的方法,必须有一个子类继承于这个抽象类,并实现抽象类中的抽象方法,通过子类的实例去调用;
public abstract class Test
{
protected abstract void proMethod();//方法体为空
//Test t = new Test();不能被实例化
}
interface (一个人实现接口,一个人去调用接口)关键字定义的接口可以实现多继承(继承多个类),它的方法都是public 抽象的,而且它的域都是final型,它的子类必须实现覆盖它声明的全部方法,它的这几点是与抽象类不同的,但是实现多态特性(类型的动态绑定,运行中确定的具体类型)是一致的。
1,接口中可以有成员变量,且接口中的成员变量必须定义初始化;
2,接口中的成员方法只能是方法原型,不能有方法主体;
3,接口的成员变量和成员方法只能public(或缺省不写),效果一样,都是public
4,实现接口的类必须全部实现接口中的方法(父类的实现也算,一般有通过基类实现接口中个异性不大的方法来做为适配器的做法)