抽象类与接口
链接: http://blog.csdn.net/chenssy/article/details/12858267
抽象类是对类抽象,而接口是对行为的抽象
抽象类可以说算是对类的一种约束规范,具有类似的特征,我们把这些特征抽象封装到一个类里
抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。
对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的契约而已。
接口根本就不需要知道子类的存在,只需要定义一个规则即可
抽象类以及其下的抽象方法用abstract关键字修饰
接口创建时把class替换成interface,接口是抽象类的抽象,是一种规范,规定了类需要实现的方法
1. 抽象类下面不仅可以有抽象方法,也可以有私有的普通方法,属性
2. 而接口不可以有私有的属性,方法,只能有全局常量和公有的抽象方法;
接口中的属性是常量,即使定义时不加上public static final,系统也会自动加上;
接口中的方法是抽象方法,即使定义时不加上public abstract ,系统也会自动加上
接口实现用implements关键字,一个子类只能继承一个父类,却可以实现多个接口。也可以多继承(用【】括起来)
总结:一个子类继承父类时,如果父类是抽象类,则必须实现父类的抽象方法
一个类实现接口时,必须实现接口定义的抽象方法
extends 与implements同时使用时,规范应该是public class A extends Fa implements IFa{}
我们可以用多态的方式,父类引用子类,接口引用接口的实现类