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());
}
}