/*
* 接口
* ——接口里不能包含普通方法,接口里只能是抽象方法
* 定义接口的基本语法
* 【修饰符】interface 接口名 extends 父接口1,父接口2...
* {
* 零到多个常量定义。。。
* 零到多个抽象方法定义
* }
*
* 接口里定义Field采用如下来年该行代码的结果 完全相同
* 1.int MAX_SIZE=10;
* 2.public static final int MAX_SIZE=10;
*
* 由于接口里的方法全部是抽象方法,因此接口里不准许定义静态方法,即
* 不可使用static 修饰接口里定义的方法
* 不管定义接口里的方法时是否使用public abstract修饰时,
* 接口里的方法总是使用 public abstract来修饰。
*/
//下面定义一个接口
interface Output {
//接口里定义的Field只能是常量
int MAX_CACHE_LINE=50;
//接口里定义的只能是public的抽象实例方法
void out();
void getData(String msg);
}
/*
* 从某个角度来看,接口可被当成一个特殊的类,因此一个java源文件里
* 最多只能有一个public接口,如果一个java源文件里定义了一个public接口,
* 则该源文件的主文件名必须鱼该接口名相同
*/
public class OutputTest implements Output {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 访问Output接口的MAX_CACHE_LINE
System.out.println(Output.MAX_CACHE_LINE);// 50
//下面语句将引起“为final变量赋值”的编译异常
// Output.MAX_CACHE_LINE=20;
}
@Override
public void out() {
// TODO Auto-generated method stub
}
@Override
public void getData(String msg) {
// TODO Auto-generated method stub
}
}
/**
* 接口的继承
* @author Administrator
*
*/
interface interfaceA{
int PROP_A=5;
void testA();
}
interface interfaceB{
int PROP_B=6;
void testB();
}
interface interfaceC extends interfaceA,interfaceB{
int PROP_C=7;
void testC();
}
public class Interface_ExtendsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(interfaceC.PROP_A);
System.out.println(interfaceC.PROP_B);
System.out.println(interfaceC.PROP_C);
}
}