*
* 引用数据类型:类、数组、接口
* 接口是一种引用数据类型,可看做是一种特殊的类,是Java为了解决没有多继承引起的功能变弱的问题
* 一个类只能有一个父类,但可以实现多个接口
* 接口不能代表一类实体,只能代表功能或属性,单纯的规范,时功能或属性独立出来,而不依赖于实体
*
* 创建接口方式:class变成interface,父子关系由extends变成implements
* 类和类:使用extends实现,单继承
* 类和接口:使用implements实现,以逗号隔开,如:class A implements B,C,D (多实现)
* 1 非抽象类实现接口后,必须实现所有抽象方法
* 2 抽象类实现接口后,可实现0~N个抽象方法
* 接口和接口:使用extends,并且是多继承,如:interface A extends B,C,D
*
* 语法:
* interface 接口名{ }
* 注意:
* 1 接口中所有变量都是为常量 public static final xxx, 且 public static final可以省略
* 2 接口中的方法 默认都是 public abstract 的,也就是抽象方法,且 public abstract 可以省略
* 3 接口中没有构造方法,也不能被实例化对象
* 从Java1.8开始,接口中可以有 默认方法和静态方法
* 可看做一个抽象类,默认方法相当于成员方法,使用相同于成员方法,静态方法直接接口名调用
* 优先使用接口,类和接口之间是多实现,使用接口还可以保留类的继承
* */
public class _01_Interface {
public static void main(String[] args) {
_01_Interface_Test.m4();
_01_Inte_Test inte_test = new _01_Inte_Test();
inte_test.m5();
_01_Interface_Test t = new _01_Inte_Test();
System.out.print("接口中发生多态:");
t.m5();
}
}
interface _01_Interface_Test{
int a = 1;
static int b = 1;
static final int c = 1;
public static final int d = 1;
void m1();
public void m2();
public abstract void m3();
public static void m4(){
System.out.println("接口中的静态方法");
}
public default void m5(){
System.out.println("接口中的默认方法");
}
}
interface _02_Interface_Test{
void _02_IF();
}
interface _03_Interface_Test extends _01_Interface_Test,_02_Interface_Test{
void _03_IF();
}
class _01_Inte_Test implements _01_Interface_Test,_02_Interface_Test,_03_Interface_Test{
@Override
public void m1() {
}
@Override
public void m2() {
}
@Override
public void m3() {
}
@Override
public void _02_IF() {
}
@Override
public void _03_IF() {
}
}
abstract class _02_Inte_Test implements _01_Interface_Test,_02_Interface_Test{
@Override
public void m1() {
}
}