目录
接口格式
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 访问接口属性...等