接口
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new运算符实例化一个接口。
一个使用实例
public class Im_test {
public static void main(String []args)
{
CallAble t=new R_CallAble();
t.call_a();
}
}
interface CallAble{
abstract void call_a();
}
class R_CallAble implements CallAble{
public void call_a()//必须声明为public,否则会报错
{
System.out.println("Test!");
}
}
如果一个类不是抽象类,那么他所继承的接口中的方法必须要全部实现
接口中可以有变量
interface CallAble{
abstract void call_a();
final int GOD=0;
int t=10;
}
用于实现接口的类可以使用接口中的变量
接口的继承
接口可以像类一样继承 ,也是使用extends
关键词
interface CallB extends CallAble{
void call_b();
}
如果一个非抽象类要实现一个接口,那么他要实现所有的方法
class R_CallAble implements CallB{
public void call_a()//必须声明为public,否则会报错
{
System.out.println("Test!");
}
public void call_b()
{
System.out.println(GOD);
}
}
一个类可以实现多个接口
class R_CallAble implements CallB,CallC{
public void call_a()//必须声明为public,否则会报错
{
System.out.println("Test!");
}
public void call_b()
{
System.out.println(GOD);
}
public void call_c()
{
System.out.println(CallC.t);
}
}
接口的可见性
接口的访问控制只有public和默认两种
public 的只能定义在单独的java文件中,这是由于public类型的类或者接口在一个java文件中只能有一个
public类型的接口可以在任何代码中使用,默认的则只能在同一个包中使用。