生活当中的接口:
电源的插板,只要符合插板的设计,就是接口。
接口是一种引用数据类型,最重要的就是其中的内容:抽象方法
注意事项:
接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract(可以不写)
如果接口当中的抽象方法,有一个未在类中实现覆盖重写,那么这个类必须是抽象类。
// 接口
public interface MyinterfaceAbstract {
// 这是抽象
public void name();
// 这是抽象
public abstract void name1();
// 这是抽象
abstract void name2();
// 这是抽象
void name3();
}
// 实现类
public class DemoInterfaceImpl implements MyinterfaceAbstract {
@Override
public void name() {
// TODO Auto-generated method stub
System.out.println("这是第一个方法");
}
@Override
public void name1() {
// TODO Auto-generated method stub
System.out.println("这是第二个方法");
}
@Override
public void name2() {
// TODO Auto-generated method stub
System.out.println("这是第三个方法");
}
@Override
public void name3() {
// TODO Auto-generated method stub
System.out.println("这是第四个方法");
}
}
//调用类
public class Demo01Interface {
public static void main(String[] args) {
DemoInterfaceImpl impl = new DemoInterfaceImpl();
impl.name();
impl.name1();
}
}
此时有一个问题,如果接扣新添加了一个方法,那么它下面所有的实现类都需要去添加这个方法,否则就会报错。
为了解决这个问题,出现了一个default默认方法。(java 1.8以后才有)
public interface MyinterfaceAbstract {
// 这是抽象
public void name();
// 这是抽象
public abstract void name1();
// 这是抽象
abstract void name2();
// 这是抽象
void name3();
// 新添加的方法
public default void name4() {
System.out.println("新视线的类");
};
}
java 1.8以后实现了接口实现类的静态方法:
使用方法: 不能通过接口实现类来调用静态方法。
通过接口名称,直接调用接口类的静态方法。
接口当中可以定义常量:
final关键字进行修饰,不可改变。
接口当中的常量,可以省略 public static final.
接口当中的常量,必须进行赋值:不能不赋值。
接口中常量的名称,使用完全大写的字母,用下划线进行分隔。
public interface MyinterfaceAbstract {
public static final int NUM_OF_CLASS = 10;
}
// 使用方法 直接接口名称.常量
public class Demo01Interface {
public static void main(String[] args) {
System.out.println(MyinterfaceAbstract.NUM_OF_CLASS);
}
}
- 接口是没有静态代码块或构造方法的。
- 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
- 如果实现类所实现的多个接口当中, 存在重复的抽象方法,那么只需要覆盖重写一次即可。
- 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
- 如果实现类实现的多个接口当中吗,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
- 一个类中如果直接父类当中的方法和接口当中的默认方法产生了冲突,有限使用父类的方法。
public class DemoInterfaceImpl implements MyinterfaceAbstract,MyinterfaceAbstractB {
}