interface中的成员
jdk7:
全局变量:public static final XX;
抽象方法:public abstract void xx();
jdk8:
静态方法(static) public static void asd(){----};
默认方法(default) public default void asd(){----};//要写default,因为默认为abstract方法。
接口 中的静态方法只能通过接口调用(接口.静态方法()),不能通过new出的对象调用(对象.静态方法())。
接口 中的默认方法可以通过new出的对象调用(对象.静态方法()),不可以(接口.默认方法())。
注:
public和abstract都是可以省略的,不写public也是默认为public和abstract的。
在接口的实现类中(class A implements B)调用默认方法的格式(接口名.super.默认方法())
/**
*
* main方法
*
*/
public class Java {
public static void main(String[] args) {
int asd = B.FF;//可以直接用(接口名.属性名)
B.RR = 30;//报错,不可以改变了,是全局常量了
}
}
/**
*
* @定义接口B
*
*/
interface B{
//全局常量
public static final int FF = 10;
//可以省略public static final,但是依然是全局常量,只不过可以省略。
int RR = 20;
//抽象类,同理也可以省略public abstract;
public abstract void aa();
void bb();
//注:不可以写构造器,所以不能实例化
}
/**
*
*
* 定义 类A 实现接口B
*
*/
abstract class A implements B{
//接口的类必要重写了接口中所有的抽象方法才可以实例化;
//如果没有重写全部的抽象类,那么就还是一个抽象类,不能实例化,
@Override
public void aa() {
// TODO Auto-generated method stub
}
//注释了一个抽象类,所以方法声明时要加abstract
// @Override
// public void bb() {
// // TODO Auto-generated method stub
//
// }
}
**interface可以实现多个接口:**
格式:class AA extends BB implements CC,EE,FF,DD{}
**interface可以继承多个接口:**
格式:interface AA extends BB,CC{}
interface可以体现多态性:
它自己不能实例化,只能通过实例化类来调用:
interface A{
//接口
}
class B implements A{
//实现接口,可以进行实例化
}
public class V {
public static void main(String[] args){
DD dd = new DD();//实例化一个对象,进行你想进行的操作。
B bb = new B();//实例化接口的类
//调用DD类中的asd方法,参数为一个名为aa的接口,
//可以用实例化的类bb传入,跟继承相似,体现多态性
dd.asd(bb);
}
}
class DD{
public void asd(A aa){};//想使用一个接口;A aa = new B();
}