接口
-
就是一种特殊的类。抽象层次比抽象类更高。
-
接口中定义的都是抽象方法。
-
接口的本质就是定义规范。
-
语法上
public interface 接口名 { public abstract 返回值类型 方法名(参数); public abstract 返回值类型 方法名(参数); }
-
接口中可以没有任何的成员。只是作为标记,称为标记型接口
-
jdk1.8以前接口中所有的方法都必须是public abstract的。但是jdk1.8以后
-
接口中可以有带有方法体的方法了。
- 静态方法:用static修饰的
- 默认方法:用default修饰的
-
接口中除了以上三种方法,不能有其他方法,包括构造方法
-
属性全部是public static final修饰的。
-
不能创建对象。
-
所以接口就是一套规范。用来实现的
-
一个类要实现接口,通过关键字implements
-
一个类可以实现多个接口。接口之间用逗号隔开就可以了
-
接口与实现类之间的关系就是like-a的关系
-
接口跟接口之间是多继承的关系,一个接口可以继承其他多个接口
-
处理接口的时候呢,当成抽象类处理即可。
public interface ISwitch { void on(); void off(); } /** * @Author: 廾匸 * @Date: 2020/10/31 17:02 * @Description: * @version: 1.0 */ public class Door implements ISwitch{ @Override public void on() { System.out.println("门开了"); } @Override public void off() { System.out.println("门关了"); } } /** * @Author: 廾匸 * @Date: 2020/10/31 17:05 * @Description: * @version: 1.0 */ public class Fan extends Electrical { @Override public void on() { System.out.println("风扇开了"); } @Override public void off() { System.out.println("风扇关了"); } } /** * @Author: 廾匸 * @Date: 2020/10/31 17:05 * @Description: * @version: 1.0 */ public class Light extends Electrical { @Override public void on() { System.out.println("电灯开了"); } @Override public void off() { System.out.println("电灯关了"); } } /** * @Author: 廾匸 * @Date: 2020/10/31 17:07 * @Description: * @version: 1.0 */ public class Person { public void open(ISwitch iSwitch) { iSwitch.on(); } public void close(ISwitch iSwitch) { iSwitch.off(); } } /** * @Author: 廾匸 * @Date: 2020/10/31 17:03 * @Description: * @version: 1.0 */ public abstract class Electrical implements ISwitch{ private String name; private double price; public Electrical() { } public Electrical(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }
/** * @Author: 廾匸 * @Date: 2020/10/31 17:10 * @Description: * @version: 1.0 */ public interface Is1 { void test01(); } /** * @Author: 廾匸 * @Date: 2020/10/31 17:10 * @Description: * @version: 1.0 */ public interface Is2 { void test01(); } /** * @Author: 廾匸 * @Date: 2020/10/31 17:11 * @Description: * @version: 1.0 */ public interface Is3 extends Is1,Is2 { void test01(); }