定义:一种特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法所组成
常量定义:public static final…(一般省略)
方法定义:public abstract…(一般省略)
1.接口的定义
接口定义用关键字 interface
public interface A {
//全局常量
/*public static final*/ String TITLE="我爱编程";
//抽象方法
/*public abstract */void a();
}
2,实现接口 可以实现一个或者多个接口
实现接口我们用implements关键字,建一个测试方法
public class test30 implements A{
@Override
public void a() {
System.out.println("方法a");
}
public static void main(String[] args) {
test30 t=new test30();
t.a();
System.out.println(A.TITLE);
}
}
实现接口 ,类里要实现接口里的抽象方法;
运行结果
为了演示实现多个接口,这里再定义一个接口
public interface B {
//全局常量
public static final String TITLE2="我爱Java";
//抽象方法
public abstract void b();
}
修改下测试类
public class test30 implements A,B{
@Override
public void a() {
System.out.println("方法a");
}
@Override
public void b() {
System.out.println("方法b");
}
public static void main(String[] args) {
test30 t=new test30();
t.a();
t.b();
System.out.println(A.TITLE);
System.out.println(B.TITLE2);
}
}
实现多个接口,中间用逗号隔开,并且实现所有抽象方法
运行结果
3.继承类和实现接口
先继承,后实现接口
先定义一个类C
public class C {
public void c() {
System.out.println("c方法");
}
}
再修改下测试类Test 继承C类,实现A,B接口,这里有个注意点,java规范,必须先继承后实现接口
public class test30 extends C implements A,B{
@Override
public void a() {
System.out.println("方法a");
}
@Override
public void b() {
System.out.println("方法b");
}
public static void main(String[] args) {
test30 t=new test30();
t.a();
t.b();
t.c();
System.out.println(A.TITLE);
System.out.println(B.TITLE2);
}
}
运行结果
4.接口的继承
接口可以多继承
定义一个D接口 继承A,B接口
public interface D extends A,B{
//抽象方法
public abstract void d();
}
重新建一个测试方法 继承C类,实现D接口
public class test31 extends C implements D{
@Override
public void a() {
System.out.println("方法a");
}
@Override
public void b() {
System.out.println("方法b");
}
@Override
public void d() {
System.out.println("方法d");
}
public static void main(String[] args) {
test31 t=new test31();
t.a();
t.b();
t.c();
t.d();
System.out.println(A.TITLE);//接口名.常量
System.out.println(t.TITLE2);//类名.常量
}
}
运行结果
注:
1.接口也不能实例化,但也可以通过父类的引用指向子类的对象
2.调用常量即可类名.常量,也可接口.常量