接口格式
interface 接口名{
//属性;
//方法;(1.抽象方法 2.默认实现方法 3.静态方法)
}
接口的修饰符
只能是default和public,和类一样
接口属性
只能是final的,而且是public static final修饰符
比如int a=10; 其实上是public static final int a=10;
属性的访问
接口名.属性名
接口方法
在JDK7中,接口中的方法都是没有方法体的
在JDK8中,接口可以有默认的实现方法,需要default关键词修饰
,接口也可以有静态的实现方法,需要static关键词修饰
定义接口:
public interface DBcon{ public void con(); public void close(); }
定义两个使用接口的类
public class SQL implements DBcon{ @Override public void con(){ System.out.println("连接SQL"); } @Override public void close(){ System.out.println("断开SQL"); } //特有方法 public void open(){ System.out.println("打开SQL"); } }
public class Oracle implements DBcon{ @Override public void con(){ System.out.println("连接Oracle"); } @Override public void close(){ System.out.println("断开Oracle"); } }
在主程序中定义一个有接口参数的方法,只要是实现了接口类的类的对象,都是可以传递进去的,并且会执行实现了此接口的类的对象中的con()方法和close()方法。(不需要向上转型为接口对象传入参数)(体现多态,接口引用可以指向实现了接口的类的对象)
public void t(DBcon db){ db.con(); db.close(); }
然后用两个类的对象分别调用
SQL sql=new SQL(); t(sql);//输出连接SQL和断开SQL Oracle o=new Oracle(); t(o);//输出连接Oracle 和断开Oracle
多态接口数组
//定义一个接口数组 DBcon[] cons=new DBcon[2]; //为什么能放进去这个对象,因为这个类实现了此接口 cons[0]=new SQL(); //所以可以放进去所有实现了此接口的类的对象 cons[1]=new Oracle();
打印不同对象的close方法
再调用某个对象的特有方法
for(int i=0;i<cons.Length;i++){ cons[i].close();//动态绑定机制 //如果想要调用数组中某个对象的特有方法 //判断某个对象是否是相应的类对象(判断运行类型) if(cons[i] instanceof SQL){ //如果是,则强制向下转型并调用方法 ((SQL)cons[i]).open(); } }
多态传递
B接口继承A接口
类实现B接口,相当于也实现了A接口
super.xxx 访问父类属性....等
接口名.xxx 访问接口属性...等