一、接口
1.使用interface定义接口
2.接口当中的方法都是抽象方法
3.接口当中的方法都是public权限
基本语法:
1.实现接口使用implements关键字,实现接口必须复写接口里面的所有方法
2.一个类可以实现多个接口
3.一个接口可以继承多个接口
e.g.
//USB.java代码
interface USB{ //定义USB接口
public void read();//无论写不写public,都是public权限
public void write();
}
//WiFi.java代码
interface WiFi { //定义WiFi接口
public void open ();
public void close ();
}
//Phone.java代码
class Phone implements USB,WiFi { //Phone实现USB和WiFi接口
public void read() {
System.out.println("USB read");
}
public void write() {
System.out.println("USB write");
}
public void open () {
System.out.println("WiFi open");
}
public void close () {
System.out.println("WiFi close");
}
}
//Test.java代码
class Test {
Phone phone = new Phone();
USB usb = phone; //向上转型,父类的引用指向子类的对象
usb.read();
usb.write();
WiFi wifi = phone; //向上转型
wifi.open();
wifi.close();
/*输出
USBPhone read
USBPhone write
WiFi open
WiFi close
*/
}
interface A{
public void funA();
}
interface B {
public void funB();
}
interface C extends A,B {//C继承A和B接口
public void funC();
}
//当一个类实现接口C时,需要复写接口A、B和C里面的所有方法
二、接口的应用
为什么要使用接口?只介绍一种使用场景
eg.打印机程序设计
interface Printer {
public void open(); //开启打印机
public void close(); //关闭打印机
public void print(String s); //打印
}
class HPPrinter implement Printer { //惠普打印机
public void open() {
System.out.println("HP open");
}
public void close() {
System.out.println("HP close");
}
public void print(String s) {
System.out.println("HP print-->s");
}
}
class ConorPrinter implement Printer { //佳能打印机
public void open() {
System.out.println("Canon open");
}
public void close() {
System.out.println("Canon close");
}
public void print(String s) {
this.clean();
System.out.println("Canon print -->s");
}
private void clean() {
System.out.println("Canon clean");
}
}
class PrinterFactory() { //打印机工厂
public static Printer getPrinter (int flag) {//返回值Printer类型的对象,参数flag
if(flag == 0) {
printer = new HPPrinter();
} else if (flag == 1) {
printer = new CanonPrinter();
}
return printer;
}
}
class Test {
public static void main (String args []) {
Printer printer = PrinterFactory.getPrinter(0);
int flag = 0;
printer.open();
printer.print("test");
printer.close();
}
}