13. 《重学 JAVA》-- 抽象类和接口
一、抽象类
在 Java 中,通过关键字 abstract 定义的类叫做抽象类。Java 是一门面向对象的语言,因此所有的对象都是通过类来描述的;但反过来,并不是所有的类都是用来描述对象的,抽象类就是其中的一种。
在一个抽象类中,至少有一个抽象方法,通过关键字 abstract 定义的方法,并且没有方法体,抽象类是不能实例化的,它需要被一个子类继承。
如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为 abstract 类。
二、接口
比抽象类更加抽象的是接口,在接口中所有的方法都是抽象的,在 JAVA 编程语言中是一个抽象类型,是抽象方法的集合,接口通常以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
1、抽象类可以有方法体的方法,但接口没有。
2、接口中的成员变量隐式为 static final,但抽象类不是的。
3、一个类可以实现多个接口,但只能继承一个抽象类。
4、接口是隐式抽象的,所以声明时不需要使用 abstract 关键字;接口的每个方法都是隐式抽象的,所以不需要使用 abstract 关键字;接口中的方法都是隐式 public 的。
三、接口与类的区别
1、接口不能实例化对象。
2、接口没有构造方法。
3、接口中的所有方法必须是抽象方法。
4、接口不能包含成员变量,除了 static 和 final 变量。
5、接口不是被类继承了,而是要被类实现。
6、接口支持多继承。
7、接口只能继承接口,不能继承类。
8、接口里的方法默认修饰符是 public abstract。
9、接口里的字段全是全局变量,默认修饰符是 public static final。
版权声明: 本文为 InfoQ 作者【杨鹏Geek】的原创文章。
原文链接:【http://xie.infoq.cn/article/75bb7007d3876d126af21a13d】。文章转载请联系作者。
评论