概念
- 接口是和类一个概念,主要定义方法名称,不实现方法体(写方法-不实现)
- 接口里面只有抽象方法,可以省掉
-
基本使用
创建一个接口

public interface MyInterface{//定义常量,public static final可以省略//全:public static final int money=10;int money=10;//定义抽象方法,public abstract可以省略//public abstract void say();void say();//封装方法int getMoney();
需要创建一个类,实现接口
通过类创建对象,调用接口方法
public class Test001{public static void main(String[] args){MyObject myobject=new MyObject();MyObject.say();}}
和抽象类的区别

相同点
- 都不可以直接创建对象,除非使用匿名内部类(主要)

- 可以作为引用类型(主要)
- 具备Object类中所定义的方法
- 可编译成字节码文件
- 都不可以直接创建对象,除非使用匿名内部类(主要)
不同点
语法格式(必须加default):提示(接口与接口也是可以继承的)

- 在创建接口的时候,可以使用default修饰默认的方法,是可以有实现体的
- 抽象方法必须被重写,但是默认方法可以不被重写,也可以重写默认方法(如果重写则不需要default)

- 在实现的类中,可以使用接口名称.super.默认方法名调用接口中的默认方法

-
静态方法
直接使用静态static进行修饰,不可以被实现类(子类)重写

-
接口的应用
接口可以使得不同的类之间的耦合性降低
- 如果不使用接口,不同类之间直接通信耦合性很紧密
- 在使用接口之后,接口之间的耦合性降低
- 在设计类的时候,如果出现了不同类之间的通信,首先应该想到接口进行接耦

电脑读取不同的设备的案例
- 如果不使用接口,那么电脑需要依赖很多其他不同的的设备,新增设备电脑类也需要更改
- 可以定义应该Usb接口,实现电脑类与其他类之间的接耦
- 设计一个Usb接口

- 直接在电脑中使用接口


- 在其他需要接入电脑的设备中实现接口

- 测试代码

- 总结代码 ```java /就可以定义一个Usb接口,实现电脑类和其他设备类的解耦 设计一个Usb接口/
- 设计一个Usb接口
public interface Usb { void work(); }
```java//在其他需要接入电脑的设备中实现接口public class MyDisk implements Usb {public void work(){System.out.println("移动硬盘正在工作");}}
//直接在电脑中使用接口public class MyComputer2 {Usb usb1;Usb usb2;public Usb getUsb1() {return usb1;}public void setUsb1(Usb usb1) {this.usb1 = usb1;}public Usb getUsb2() {return usb2;}public void setUsb2(Usb usb2) {this.usb2 = usb2;}public void work(){if(usb1!=null){usb1.work();}if(usb2!=null){usb2.work();}System.out.println("这台电脑正常工作了");}}
//测试代码public static void main(String[] args) {MyComputer2 myComputer2 = new MyComputer2();myComputer2.setUsb1(new MyDisk());myComputer2.setUsb2(new MyFan());myComputer2.work();}
设计模式(重点)
概念
- -套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
- 可以简单理解为特定问题的固定解决方法。
-
工厂设计模式(重点)
概念
基本使用
创建一个工厂可以创建设备的接口 ```java /就可以定义一个Usb接口,实现电脑类和其他设备类的解耦 设计一个Usb接口/
public interface Usb { void work(); }
2. 所有的可以被这个工厂创建的类都需要实现这个接口```java//在其他需要接入电脑的设备中实现接口public class MyDisk implements Usb {public void work(){System.out.println("移动硬盘正在工作");}}
创建工厂类实现设备的创建
public Usb createUsbDevice(int type){switch(type){case 1:return new MyMouse();case 2:MyFan fan=new MyFan();return fan;case 3:Usb usb=new MyDisk();return usb;}}
在使用的时候直接通过工厂类创建对象


