7-2 接口
Java通过接口来实现多继承
Java不直接支持多继承
接口是一种特殊的抽象类,是方法定义(没有实现)和常量的集合,是一种引用数据类型(实现双向传递,共享地址)
一个类可以同时实现多个接口
接口也具有继承性,且支持多继承
一个接口可以有多个直接父接口,它们之间用逗号分隔
接口中的属性都是用final修饰的常量
接口中的方法都是用abstract修饰的抽象方法
接口中不能实现任何方法(而抽象类中可以有方法实现)
接口的定义:
[public]interface 接口名 [extends 父接口名列表]
{//接口体;
//常量域声明
//抽象方法声明
[public][abstract][native]类型符 方法名(参数列表)[throws 异常列表]{}}
系统默认接口的属性为:
public static final
系统默认接口中的方法为:
public abstract
e.g;interface A
{int m=0;
void f();}
interface B
{int n=1;
void g();}
interface D extends A,B
{int k;
public void s();}
interface E extends A
{}
接口的实现
一个类实现一个接口,是指该类给出这个接口的所有行为的具体实现过程
一个类在实现某接口的抽象方法时,必须使用完全相同的方法头,必须使用public修饰符,在实现接口时,系统默认的修饰符(如public)是不能省略的
一个类实现接口后,将继承接口中的所有静态常量,为该类所用
若一个类只实现了接口中的部分方法,则该类只能声明为abstract类。仅当一个类实现了一个接口的所有方法时,才能实例化
接口实现的格式:
[修饰符]class 类名 [extends 父类名]
[implements 接口A,接口B。。。]
{类自定义新成员;
实现接口A(为A中的所有方法编写方法体)
实现接口B(为B中所有方法编写方法体)
。。。。。}
e.g:interface A
{int m=2;void f();
public void g();}
class B implements A
{public void f(){System.out.println("java");}
public void g(){System.out.println(m);}}
public class D
{public static void main(String args[])
{A b=new B();
b.f();//java
b.g();//2
}}
e.g:interface A{void f();}
interface B{void g();}
class D implements A,B
{public void f(){System.out.println("AA");}
public void g(){System.out.println("BB");}
}
public class E
{public static void main(String args[])
{A a=new D();
a.f();//AA
B b=new D();
b.g();//BB
}}
对抽象类就要继承,对接口就要实现;
7-3 完整的Java源文件格式
.package packageName;//指定文件中类所属的包,最多1句
.import packageName.[className|*];
//指定引入的类,0个或多个
.public classDefinition
//定义public类,0个或1个
.interfaceDefinition and classDefinition
//接口或类定义,0个或多个