一、接口
Java接口(interface)技术,主要用来描述类具有什么功能,而并不是给出每个功能的具体实现。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用相应接口的对象。
二、有抽象类了为什么还要引入接口概念
大家学到接口可能会产生这样一个疑问:既然有了抽象类,为什么Java程序设计语言还要不辞辛苦的引入接口这个概念呢?
非常遗憾,使用抽象类表示通用属性会存在这样一个问题:因为Java是单继承,每个类只能扩展于一个类。假设一个类已经继承了一个类了,那么它就不能再继续扩展啦?哈哈,所以要引入接口概念!因为一个类可以实现一个或多个接口,并在需要接口的地方,随时使用相应接口的对象。
三、抽象类和接口
抽象类的定义方法
public abstract class Comparable{
public abstract int compareTo(Object other);
}
接口的定义方法
public interface Comparable{
int compareTo(Object other); //会被自动设置为public,无需声明,Java语言规范也建议不要声明
}
注意:
1.抽象类和接口都不能被实例化
2.抽象类就是类,除了不能实例化和普通的Java类没区别。他可以声明一个或多个抽象方法,让继承他的类去实现,而且必须实现。
3.接口中不能有实例域,但是接口可以有public static final 常量,和接口中的方法被自动设置public一样,接口中的域将被自动设置为public static final ,声明方法
double SPEED_LIMIT = 95; //将会被自动设置为 public static final
4.在Java SE 8中,允许在接口中添加静态方法,并在接口中实现它。
public interface BeHappy {
static void sayHappy(){
System.out.println("开心");
}
}
5.在Java SE 8中,允许在接口中添加默认方法,并在接口中实现它。
public interface BeHappy {
default void sayHappy(){
System.out.println("开心");
}
}
不过会产生默认方法冲突的问题,感兴趣的,或者需要用到的同学,可以自行百度啊。