抽象类、接口
1、抽象类与接口:
抽象类是一种类,里面除了有抽象方法外,还可以有具体的方法;
接口里面必须都是抽象的方法;
在Java中,凡是声明为形如:abstract void function()的方法,都是抽象方法;
包含抽象方法的类就是抽象类,抽象类中是可以没有抽象方法的;
有抽象方法的类必须是抽象类;
抽象类不一定有实体方法。
2、继承:
Java继承机制不允许多重继承类,但一个类允许实现多个接口
继承抽象类时,必须重写其抽象方法;
抽象类不能被声明为final类型的,因为加final关键字的类保证不能被继承,因此为抽象类加final关键字,这个类就没法用了。抽象类只能被继承,不能被实例化!
声明为interface的类为接口,比抽象类更加抽象的一种机制。在接口中,我们不能提供任何实现,所有方法必须都是抽象的,可以不加abstract关键字,但是编译器对于接口中的方法,都是直接按抽象方法处理的。我们通过implements来实现某个接口。当我们实现某个接口时,必须重写其所有方法。
3、总结一下抽象类与接口的区别和联系:
a) 抽象类是类,可以有实体方法。
b) 抽象类不能实现多继承,而接口可以。
c) 如果需要创建不带任何方法定义和成员变量的基类,则使用接口,如果类中需要有部分具体的实现,则使用抽象类。
d) 如果事先想要将某类设计为一个基类,那么首选接口。 |
|