Java接口可以理解为一种特殊的类,是由全局常量和公共的抽象方法所组成,定义在接口中的方法默认是public的
接口如果不写public,则也是public访问权限,不是default
与抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字实现接口。
一个子类可以同时实现多个接口,摆脱了Java的单继承局限
//================================================= // File Name : interface_demo //------------------------------------------------------------------------------ // Author : Common // 类名:A // 属性: // 方法: interface A_1{ //定义接口A_1 public String AUTHOR = "张三"; //定义全局常量,等价于:public static final String AUTHOR = "张三"; public void print(); //定义抽象方法,等价于:public abstract void print(); public String getInfo(); //定义抽象方法,等价于:public abstract String getInfo(); } interface B_1{ //定义接口B_1 public void say(); //定义抽象方法 } class X implements A_1,B_1{ //子类同时实现两个接口 @Override public void say() { //覆写B接口中的抽象方法 // TODO 自动生成的方法存根 System.out.println("Hello World!"); } @Override public void print() { //覆写A接口中的抽象方法 // TODO 自动生成的方法存根 System.out.println("作者:"+AUTHOR); } @Override public String getInfo() { //覆写A接口中的抽象方法 // TODO 自动生成的方法存根 return "HELLO"; } } //主类 //Function : interface_demo public class interface_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 X x = new X(); //实例化子类对象 x.say(); //调用被覆写过的方法 x.print(); //调用被覆写过的方法 } }
同时实现继承和接口
//================================================= // File Name : extends_implements_demo //------------------------------------------------------------------------------ // Author : Common // 类名:A_2 // 属性: // 方法: interface A_2{ //定义接口A_1 public String AUTHOR = "张三"; //定义全局常量 public void print(); //定义抽象方法 public String getInfo(); //定义抽象方法 } //类名:B_2 //属性: //方法: abstract class B_2{ //定义一个抽象类 public abstract void say(); //定义一个抽象方法 } //类名:B_3 //属性: //方法: abstract class B_3 implements A_2{ //定义一个抽象类,并实现接口 public abstract void say(); //定义一个抽象方法 } //类名:X_2 //属性: //方法: class X_2 extends B_2 implements A_2{ //同时实现继承和接口 @Override public String getInfo() { //覆写A_2接口中的抽象方法 // TODO 自动生成的方法存根 return "HELLO"; } @Override public void say() { //覆写B_2抽象类中的抽象方法 // TODO 自动生成的方法存根 System.out.println("Hello World!"); } @Override public void print() { //覆写A_2接口中的抽象方法 // TODO 自动生成的方法存根 System.out.println("作者:"+AUTHOR); } } //类名:X_3 //属性: //方法: class X_3 extends B_3{ //继承抽象类,覆写全部的抽象方法 @Override public void print() { //覆写B_3抽象类中的抽象方法 // TODO 自动生成的方法存根 System.out.println("作者:"+AUTHOR); } @Override public String getInfo() { //覆写B_3抽象类中的抽象方法 // TODO 自动生成的方法存根 return "HELLO"; } @Override public void say() { //覆写B_3抽象类中的抽象方法 // TODO 自动生成的方法存根 System.out.println("Hello World!"); } } public class extends_implements_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 X_2 x = new X_2(); //实例化子类对象 x.say(); //调用被覆写过的方法 x.print(); //调用被覆写过的方法 X_3 x_1 = new X_3(); x_1.say(); x_1.print(); } }
接口的继承
//================================================= // File Name : extends_implements_demo2 //------------------------------------------------------------------------------ // Author : Common // 类名:C // 属性: // 方法: interface C{ // 定义接口C public String AUTHOR = "张三"; //定义全局常量 public void printC(); //定义抽象方法 } //类名:D //属性: //方法: interface D{ //定义接口D public void printD(); //定义抽象方法 } //类名:E //属性: //方法: interface E extends C,D{ // 定义接口E,同时继承接口C和D public void printE(); //定义抽象方法 } //类名:F //属性: //方法: class F implements E{ @Override public void printC() { // TODO 自动生成的方法存根 System.out.println("C--Hello World"); } @Override public void printD() { // TODO 自动生成的方法存根 System.out.println("D--Hello World"); } @Override public void printE() { // TODO 自动生成的方法存根 System.out.println("E--Hello World"); } } //主类 //Function : extends_implements_demo2 public class extends_implements_demo2 { public static void main(String[] args) { // TODO 自动生成的方法存根 F f = new F(); f.printC(); f.printD(); f.printE(); } }
接口的实际应用
接口在实际中更多的作用是用来制订标准,例子USB设备
//================================================= // File Name : implements_usb_demo //------------------------------------------------------------------------------ // Author : Common // 接口名:USB // 属性: // 方法: interface USB{ public void start(); public void stop(); } //类名:computer //属性: //方法: class computer { public static void plugin(USB usb){ usb.start(); System.out.println("=====USB 设备工作====="); usb.stop(); } } //类名:FLASH //属性: //方法: class FLASH implements USB{ @Override public void start() { // TODO 自动生成的方法存根 System.out.println("U盘开始工作"); } @Override public void stop() { // TODO 自动生成的方法存根 System.out.println("U盘停止工作"); } } //类名:Print //属性: //方法: class Print implements USB{ @Override public void start() { // TODO 自动生成的方法存根 System.out.println("打印机开始工作"); } @Override public void stop() { // TODO 自动生成的方法存根 System.out.println("打印机停止工作"); } } //主类 //Function : implements_usb_demo public class implements_usb_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 computer.plugin(new FLASH()); computer.plugin(new Print()); } }