基本介绍
接口给出一些没有实现的方法,封装到一起,到某个类使用时再根据具体情况把这些方法写出来。
注意:在jdk7之前,接口里所有的方法都是抽象方法。在jdk8之后接口中可以有静态方法,默认方法
interface 接口名{
    //属性
    //方法
}
class 类名 implements 接口{
    //自己的属性
    //自己的方法
    //必须实现的接口的抽象方法
}
例子
public interface AInterface{
    //属性
    int a=10;
    //方法(抽象方法)
    void b();
	//jdk8之后接口中可以有默认方法
    default public void c(){
       System.out.println("hello");
    }
    //jdk8之后接口中可以有静态方法
    public static void d(){
       System.out.println("hi");
    }
}
深入讨论

//项目经理写的
public interface DBInterface{
	void connect();
	void close();
}
//A程序员连接mysql
public class MysqlDB implements DBInterface{
	@override
	public void connect(){
		System.out.println("连接mysql");
	}
	public void close(){
		System.out.println("关闭mysql");
	}
}
//B程序员连接Oracle
public class Oracle implements DBInterface{
	@override
	public void connect(){
		System.out.println("连接Oracle");
	}
	public void close(){
		System.out.println("关闭Oracle");
	}
}
//运行数据库
public class InterfaceTest {
    public static void main(String[] args) {
        MysqlDB mysqlDB = new MysqlDB();
        //调用方法
        InterfaceTest interfacetest= new InterfaceTest();
        interfacetest.work(mysqlDB);
    }
    public static void work(DBInterface db){
        db.connect();
        db.close();
    }
}
运行结果
 
使用细节
1、接口中所有的方法都是publoc, 默认使用public abstract修饰方法
void a();
//实际上是
public abstract void a();
2、一个普通类实现接口就必须将该接口中的所有方法都实现,可以使用alt+enter
 3、抽象类实现接口,可以不用实现接口中的方法。
 4、一个类可以实现多个接口
class Pig implements A,B{
	... ...
}
5、接口中所有的属性都是public, 默认使用public static final修饰属性,且必须初始化
int a=1;
//实际上是
public static final a=1;
6、接口不能继承类,但是可以继承多个其他接口。
interface A extends B,C{}
7、接口的修饰符只能是public和默认,这点和类的修饰符是一样的
接口VS继承
1、接口和继承解决的问题不同
 继承的价值主要在于:解决代码的复用性和可维护性。
 接口的价值主要在于:设计,设计好各种规范(方法),让其它类去实现这当方法。
 2、接口比继承更加灵活
 接口比继承更加灵活。继承是满足is - a的关系,而接口只需满足like - a的关系。
 3、接口在一定程度上实现代码解耦



















