转载: https://www.cnblogs.com/libinhong/p/10990347.html
https://blog.csdn.net/cillyb/article/details/81611090
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。
人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
1.抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
2.抽象类可以有具体的方法 和属性, 接口只能有抽象方法和不可变常量
3.抽象类主要用来抽象类别,接口主要用来抽象功能.
接口的定义:
接口中定义抽象方法
抽象方法:没有方法体的方法,并且使用abstract关键字修饰
默认修饰符:public abstract 可以省略
public abstract 返回值类型 方法名(形参);
接口中定义默认方法--有方法体的方法
默认方法:使用 default
修饰,不可省略,供子类调用或者子类重写。
public default 返回值类型 方法名(形参){ 方法体 }
接口中静态方法的定义
静态方法:使用 static
修饰,供接口直接调用。
public static 返回值类型 方法名(形参){ 方法体 }
接口中定义私有方法
私有方法:使用 private
修饰,供接口中的默认方法或者静态方法调用
私有非静态方法
private 返回值类型 方法名(形参){ 方法体 }
私有静态方法
Private static 返回值类型 方法名(形参){ 方法体 }
接口和抽象类的特点
接口就是一种引用数据类型
接口中只能定义常量和方法(抽象方法,静态方法,默认方法,私有方法)
接口不能定义成员变量和构造方法
接口不能创建对象,只能通过其实现类来使用
接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
抽象类里可以没有抽象方法
抽象方法要被实现,所以不能是静态的,也不能是私有的。