1. Java接口的基础知识
https://www.runoob.com/java/java-interfaces.html
2. Java接口多此一举?
接口作为是抽象方法的集合,在JDK 1.8以前没有方法体,一个类通过继承接口的方式,从而来继承接口的抽象方法。但是仔细一想,直接在类中定义同样的方法来实现功能,省得再多做一步继承接口实现接口方法的步骤,岂不美哉?没有方法体的接口似乎就像一个“空壳”,显得多此一举。
- 接口是为了实现多态
- 有时候接口代表一种标准
观察下列:
public interface IEat{
public void eat() ;
}
public class Person implements IEat{
@Override
public void eat(){
System.out.println("人吃饭用筷子");
}
}
public class Animal implements IEat{
@Override
public void eat(){
System.out.println("动物吃饭不用筷子");
}
}
public class Temp{
private IEat eat ;
public Temp(IEat eat){ //这里就不用具体到 是使用Person 还是 Animal了
this.eat = eat ;
}
public class Test{
public static void main(String[] args) {
Person man = new Person();
Animal cat = new Animal();
IEat live = man; //这里也可以 IEat live = cat;
Temp obj = new Temp(live);
obj.eat();
}
}
当多个类都有相同的方法 ,但方法的实现都不一样,接口可以实现多态。在使用这些类的方法时,通过接口作为“指针”,指向某个类的对象,而无须“写死”具体类,从而实现解耦,也具备了可扩展性。
接口在项目中的应用——例如一个系统需同时支持db2,oracle,mysql数据库,且用到一些与特定数据库相关的语句。这时候抽象出一个数据库访问接口,然后为db2,mysql,oracle各定义一个自己的实现类,在系统中使用的是数据库访问接口,并配上静态工厂或抽象工厂;另外,某些方法的升级,通过接口可以轻松实现功能替换。
通常,架构师用接口做系统架构。比如对某张表进行插入操作,架构师不会写具体的插入方法,而是写一个接口和抽象方法insert(),而实现接口的工作交给其他Java程序员们实现。
更重要的,java通过 interface 实现了多继承!