抽象类与接口

来源:互联网 发布:爬虫软件有哪些 编辑:程序博客网 时间:2024/04/30 17:22

先说一下接口中的成员变量必须是public static final的:

     首先public比较容易理解,因为实现接口的实现类需要得到这个成员变量。其次对于final,因为接口的设计理念是基于一种标准化的思想,即接口是关乎一种公共的功能的抽象,在接口中,接口的成员变量和方法处于相同的地位,成员变量也表示该接口的一种属性,是一种公共的标准的属性,如果不置为final,那么每个继承他的接口都有可能改变他,那么就丧失了接口作为一种标准化的存在的 意义。而static,即接口的实现类都共享这一份变量,至于为什么需要都共享这一个域,可能一方面是从访问速度上来考虑,另一方面可能从接口设计上来考虑的,这里本人尚未搞清楚,以后想明白再补充。

接口是对一个动作的抽象,而抽象类是对一个类的抽象(对一种事物的抽象);接口没有构造方法;包含的方法全部都是抽象方法;接口不能含有静态方法;

抽象类中的域(成员变量)是普通的成员变量;抽象类中可以包含已经实现的部分方法,也可以完全不包含抽象方法,抽象类可以有构造方法,但是抽象类不能实例化对象;抽象类可以含有静态方法,因为他可以实现部分方法的;抽象类的方法必须在子类中实现,因此不能抽象静态方法和构造器方法(也因为静态方法可以直接被调用,如果抽象了,又不能立刻实现它,因此也是没有意义的);当抽象类中有构造方法时,如果实例化一个子类对象,那么会先执行抽象类的构造方法;(其实没有构造方法时,可能有默认的构造方法)

不能抽象抽象类的构造器方法,因为如果抽象了,就必须要实现它,构造器又不能当做普通的方法来重写,其次子类和抽象类的类名都不能,所以谈不上重写,因此抽象类的构造方法不能抽象。

抽象类其实就是一抽象部分方法的普通类。

0 0