1.接口定义:一种特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法所组成;
接口定义用关键字interface
先定义一个A接口:
package m10d29;
// 定义一个接口
public interface A {
//定义一个全局变量
public static final String name="java";
//定义一个抽象方法,abstract可以省略,具体功能实现交给子类;
public abstract void a();
}
注意:由于接口里的方法都是抽象的,所以abstract可以省略;
2,实现接口 可以实现一个或者多个接口
实现接口我们用implements关键字
package m10d29;
public class Test1 implements A{
@Override
public void a() {
System.out.println("a方法");
}
public static void main(String[] args) {
Test1 t=new Test1();
t.a();//调用a方法
System.out.println(Test1.name);
}
}
结果:
a方法
java
implements也可以实现多个接口(用逗号隔开):
再定义一个B接口:
package m10d29;
public interface B {
public static final String name1="html";
//abstract可以省略
public void b();
}
在测试类中:
package m10d29;
public class Test1 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) {
Test1 t=new Test1();
t.a();//调用a方法
t.b();//调用b方法
System.out.println(Test1.name);
System.out.println(Test1.name1);
}
}
输出结果:
a方法
b方法
java
html
3,继承类和实现接口 先继承,后实现接口
我们定义一个C类:
package m10d29;
public class C {
public void c(){
System.out.println("c方法");
}
}
在测试类Test中继承C类并且实现A和B两个接口的功能:
继承类的关键字extends要写在实现接口关键字implements的前面
package m10d29;
public class Test1 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) {
Test1 t=new Test1();
t.a();//调用a方法
t.b();//调用b方法
t.c();//调用c方法
System.out.println(Test1.name);
System.out.println(Test1.name1);
}
}
输出结果:
a方法
b方法
c方法
java
html
4.接口可以实现多继承
比如再建一个D接口,分别继承A接口和B接口:
package m10d29;
public interface D extends A,B{
public void d();
}
在测试类Test中,将实现接口A和B改为D,并且调用d方法:
package m10d29;
public class Test2 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) {
Test2 t=new Test2();
t.a();//调用a方法
t.b();//调用b方法
t.c();//调用c方法
t.d();//调用d方法
System.out.println(Test2.name);
System.out.println(Test2.name1);
}
}
输出结果为:
a方法
b方法
c方法
d方法
java
html