package com.month8;
/**
* JDK8.0接口新特性:增加了静态方法和默认方法(实例方法)
* jdk8.0之前:属性【只能存在静态常量 public static final修饰,可省略不写】+方法【默认有abstract修饰,可省略不写】
*
* 接口:一组功能的集合。
* 语法定义格式:
* 访问修饰符 inteface 接口名{
* 静态常量;
* 抽象方法;
* jdk8.0之后:静态方法和默认方法【实例方法 default修饰的】;
* }
* 特征如下:
* 1、没有静态代码块和实例代码块
* 2、没有构造方法,即不能new对象。
* 3、解决了单继承的缺点,一个类中可以实现多个接口。【支持多继承】关键字 implements
* 4、只有接口与接口之间的继承,没有普通类/抽象类继承接口。
* 5、普通类/抽象类可以实现接口。
* 6、只能存在静态变量和抽象方法。
* 7、接口具有可插拔性。
* 8、jdk8的新特性:支持静态方法【static修饰的】和实例方法【默认方法:default修饰的】
* 9、静态方法属于类级别的,不能被继承。而默认方法属于对象级别,可以被继承。
* 10、默认方法可重写成抽象方法。
* 11、定义接口后,有两种身份需了解:
* 实现者:实现接口中的抽象类【重写接口中的方法】。
* 调用者:调用已实现的方法。【调用实现类中的方法】
* 例如:顾客到店点餐
* 菜单【接口】:店中有哪些吃的。以一个菜单的形式抽象出来。把所有店里能做的菜都制作成一个菜单。(抽象化思维)
* 厨师【实现者】:厨师按照已点餐的菜单炒菜。(具体化思维)
* 顾客【调用者】:顾客按照菜单点餐。(点餐、付款即可)
* 12、使用接口可以降低耦合度。【耦合度低,扩展力强】
* */
public interface InterfaceTest01{
int Constant = 0; // 省略了public static final修饰符
public int sum();// 省略了 abstract修饰符
public abstract int sum(int x,int y);
// 以下为 jdk8.0接口新特性
default void fun1() {
System.out.println("无返回值的实例方法");
}
default String fun2() {
return "有返回值的实例方法【默认方法】";
}
public static void fun3() {
System.out.println("无返回值静态方法");
}
public static String fun4() {
return "有返回值静态方法";
}
}