接口和抽象类一样也是一种规范。
目录
一.接口的定义与特点
二.接口的用法
三. JDK8对接口方法的新增
一.接口的定义与特点
- JDK8之前接口中只能是抽象方法和常量,没有其他成分了。
- 接口不能实例化。
public interface Sport {
//常量
final static String goal = "做一名合格的运动员";
//抽象方法
abstract void run();
}
二.接口的用法
1.一个实现类可以实现单个接口,也可以实现多个接口(和继承不同)
2.实现在在继承接口后,必须重写接口中的所有方法,否则就定必须定义成抽象类
//JumpSport.java
public interface JumpSport{
final static String goal = "做一名合格的跳高运动员";
void Jump();
}
//BasketballSport.java
public interface BasketballSport {
final static String goal = "做一名合格的篮球运动员";
void Basketball();
}
//SportMan.java
//SportMan类实现了多个接口,并依次实现接口中的方法
public class SportMan implements JumpSport,BasketballSport{
//重写接口的方法
@Override
public void Jump() {
System.out.println("每天跑步");
}
@Override
public void Basketball() {
System.out.println("每天打篮球");
}
}
3.接口和接口的关系:多继承,一个接口可以同时继承多个接口。
我们也可以在刚刚的代码基础上,创建一个Sport接口让他继承其他的接口,这样子类只需实现Sport这个接口就可以了。规范合并,整合多个接口为同一个接口,便于子类实现。
public interface Sport extends JumpSport,BasketballSport{
//常量
final static String goal = "做一名合格的运动员";
//抽象方法
abstract void run();
}
public class SportMan implements Sport{
//重写接口的方法
@Override
public void run() {
System.out.println("每一个运动员每天都要跑步");
}
@Override
public void Jump() {
System.out.println("每天跑步");
}
@Override
public void Basketball() {
System.out.println("每天打篮球");
}
}
4. 这里再总结下类和接口的区别
类和类的关系: 单继承。 类和接口的关系:多实现。 接口和接口的关系:多继承,一个接口可以同时继承多个接口。三. JDK8对接口方法的新增
改进:允许接口中直接定义带有方法体的方法
1.新增default(默认方法) :必须用default修饰,需要用接口的实现类的对象来调用
2.新增static静态方法:必须static修饰,必须用本身的接口名来调用。
3.新增private私有方法:JDK 1.9才开始有的。(了解)
前面我们的代码,是通过子类重写父类方法来实现方法的调用,这样的话,每次方法体代码的修改都要到子类中实现,很不方便,JDK8之后允许接口中直接定义带有方法体的方法。



