接口的使用的方法真正体现了面对对象的精髓。
接口绝对是最重要的。
主要内容。
1.什么是接口。
2.接口的基本语法。
电脑===>>USB接口.可接MP3,手机,冰箱.
USB
接口的基本语法。(就是比较纯的抽象类。)
1.使用interface定义。
2.接口当中的方法都是抽象方法。
3.接口当中的方法都是public权限。
定义了接口,就是定义了调用对象的标准.很重要.
1.实现接口使用implements关键字。
2.一个类可以实现多个接口。(与一个类只能继承一个父类不同)
3.一个接口可以继承多个接口。
实现是一种特殊的继承
程序例子
USB接口
interface USB{
public void read();
public void write();
}
实现USB接口(子类复写父类的抽象函数)
class USBphone implements USB{
public void read(){
System.out.println("USBphone read");}
public void write(){
System.out.println("USBphone write");
}}
测试1
class Test{
public static void main(String [] args){
USBphone usbphone = new USBphone();
USB usb = usbphone;
usb.read();
usb.write();
} }
定义WiFi接口
interface WiFi{
public void open();
public void close();
}
使用phone类实现 USB,WIFI接口
class Phone implements USB,WiFi{
public void read(){
System.out.println("Phone read");
}
public void write(){
System.out.println("Phone write");
}
public void open(){
System.out.println("WiFi open ");
}
public void close(){
System.out.println("WiFi Close");
}
}
测试2
class Test{
public static void main(String args[]){
//USBPhone usbPhone = new USBPhone();
//USB usb = usbPhone;
//usb.read();
//usb.write();
Phone phone = new Phone();
USB usb = phone; //接口也可向上转型的。
usb.read();
usb.write();
WiFi wifi = phone;
wifi.open();
wifi.close();
}
}
interface A{
public void funA();
}
interface B{
public void funB();
}
interface C extends A,B{
public void funC();
}
本集主要内容
1.为什么要使用接口。
2.工厂方法模式。
接口其实定义了一种标准。
实现接口。
实例1 如下.
一个printer接口, 一个HPPrinter类, 一个CanonPrinter类.还有一个Test类.
//Printer 接口
interface Printer{
public void open();
public void close();
public void print(String s);
}
//HPPrinter 类
class HPPrinter implements 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 );
}
}
//CanonPrinter 类
class CanonPrinter implements Printer{
private void clean(){
System.out.println("Canon Priter clean");
}
public void close(){
this.clean();
System.out.println("Canon close");
}
public void open(){
System.out.println("Canon open");
}
public void print(String s ){
System.out.println("Canon Print--->"+s);
}
}
class Test{
public static void main(String args[]){
//根据用户的选择,生成相应的打印机对象
//并且向上转型为Printer类型。
//Printer getPrinter(int flag);
Printer printer = null;
int flag = 1;
if(flag == 0){
printer = new HPPrinter();//向上转型
}
else if(flag ==1){
printer = new CanonPrinter();//向上转型
}
printer.open();
printer.print("test");
printer.close();
}
}
上面的程序还有很多问题,在Test 类,生成对象的代码重复出现.
静态工厂模式
增加一个PrinterFactory类
class PrinterFactory{
public static Printer getPrinter(int flag){
Printer printer = null;
if(flag == 0){
printer = new HPPrinter();//向上转型
}
else if(flag ==1){
printer = new CanonPrinter();//向上转型
}
else if(flag ==2){
printer = new XXXPrinter();//向上转型
}
return printer;
}
}
在Test类,这样做.
class Test{
public static void main(String args[]){
//根据用户的选择,生成相应的打印机对象
//并且向上转型为Printer类型。
int flag = 2;
Printer printer = PrinterFactory.getPrinter(flag);
printer.open();
printer.print("test");
printer.close();
}
}
所以以再增加打印机.只需要增加一个打印机.如添加XXXPrinter打印机
//XXXPrinter 类
class XXXPrinter implements Printer{
public void open(){
System.out.println("XXX open");
}
public void close(){
System.out.println("XXX close");
}
public void print(String s){
System.out.println("XXX print--->"+s );
}
在PrinterFactory里面添加.
else if(flag ==2){
printer = new XXXPrinter();//向上转型
}
无需对打印机的调用代码进行修改...