*抽象类*
定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,,那么这个类就必须声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),,不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外这些方式的访问控制必须和父类中一样(或者更为宽松)。
比如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护或者共有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。
*接口*
使用接口interface,可以指定某个类必须实现那些方法,但不需要定义这些方法体内容。
接口是通过interface关键字来定义的,就像定义一个标准的类一样,但其中定义所以的方法都是空的。
接口中定义的所有方法都必须是公有的,这是接口的特性
要实现一个接口,使用implements操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口名称。
实现多个接口是,接口中的方法不能有重名
接口也可以继承,,extends
类要实现接口,必须使用和接口中所定义的方法完全一致的方式,否则会导致致命错误
##区别
1.对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以用个关键字extends继承
2.接口中不可以声明成员变量(包括静态变量),但是可以声明类常量。抽象类中可以声明各种类型的成员变量,实现数据的封装。
3.接口没有构造函数,抽象类可以有构造函数
4.接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰
5.一个类可以同时实现多个接口,但一个类只能继承于一个抽象类