概述,:接口就是公共的规范标准。
接口抽象方法的定义。
1.格式:
public abstract 返回值类型 方法名称(参数列表);
注意事项:
1.接口的抽象方法,修饰符必须是两个固定的关键字。:public abstract
2.这两个关键字 可以选择性省略。
//这是一个抽象方法
public abstract void methodAbs1();
//这是一个抽象方法
public void methodAbs2();
//这是一个抽象方法
abstract void methodAbs3();
//这是一个抽象方法
void methodAbs4();
3.方法的三要素,可以随意定义。
接口使用步骤:
1.接口不能直接使用,需要“实现类”来"实现"接口。 (实现类:相当于子类,实现:相当于继承)
格式:
public class 实现类名称 implements 接口名称{
//.......
}
2.接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。
实现:去掉abstract ,加上方法体大括号。(覆盖重写)
3.创建实现类的对象,进行使用。
创建一个新类,(通常使用哪个接口就写哪个接口全名,后面再加Impl)
public class MyInterfaceAbstractImpl implements MyInterfaceAbstract{
@Override
public void methodAbs1(){
System.out.println("第一个方法");
}
@Override
public void methodAbs2(){
System.out.println("第2个方法");
}
@Override
public void methodAbs3(){
System.out.println("第3个方法");
}
@Override
public void methodAbs4(){
System.out.println("第4个方法");
}
}
main方法创建实现类对象
MyInterfaceAbstractImpl impl = new MyInterfaceAbstractImpl();
impl.methodAbs2();
注意事项:如果实现类并没有覆盖重写接口中的所有抽象方法,那么这个实现类必须是抽象类。
接口默认方法定义 default
从java 8 开始允许使用默认方法。
格式:
public default 返回值类型 方法名称(参数列表){
方法体
}
备注:接口中的默认方法,可以解决接口的升级问题。
public class MyInterfaceDefault{
}
接口默认方法使用 (实现接口升级的 也可以添加函数模型)
(接口里方法A,被使用。之后接口添加方法B。被使用的报错,解决方法。方法B变成默认方法。)
创建默认方法的接口
public interface MyInterfaceDefault{
//抽象方法
public abstract void mehodAbs();
//新添加的方法,改成默认方法
public default void methodDefault(){
System.out.println("这是新添加的默认方法。");
}
}
继承接口不覆盖重写默认方法
public class MyInterfaceDefaultA implements MyInterfaceDefault{
@Override
public void mehodAbs(){
System.out.println("实现了抽象方法。");
};
}
创建MyInterfaceDefaultA对象之后,也可以调用默认方法。
接口的静态方法(java8开始)
静态方法:跟什么什么对象没关系,列如有一个学生,叫小明运行这个方法。还有一个学生叫小红也运用这个方法。这个方法没有区别,跟小明小红没关系,只跟学生有关系。
格式:
public static 返回值类型 方法名称(参数列表)方法体;
提示:将abstract或者default换成static即可。
接口静态方法的使用。
创建
public interface MyInterfaceStatic {
public static void methodStatic(){
System.out.println("这是接口静态方法");
};
}
实现类
public class MyInterfaceStaticImpl implements MyInterfaceStatic{
//没有抽象方法则不需要使用覆盖重写
}
使用:
注意:不能通过接口的实现类来调用接口当中的静态方法。
正确方法:通过接口名称直接调用其中静态方法。
格式:
接口名称.静态方法名(参数);
public class Demo01Interface{
pulbic static void main(Stirng [] args){
//创建了实现类对象
MyInterfaceStaticImpl impl= new MyInterfaceStaticImpl();
//错误写法 impl.methodStatic();
//直接通过接口名称调用静态方法
MyInterfaceStatic.methodStatic();
}
}
接口的私有方法定义。
问题描述:
我们需要一个公共方法,给予其他方法使用但是不能让,实现类使用,将这个方法私有化。
解决方法:从java 9 开始允许使用接口私有化。
1.普通私有方法,:解决多个默认方法之间重复代码问题
格式:
private 返回值类型 方法名称(参数列表){方法体}
2.静态私有方法:解决多个静态方法之间的重复代码问题
格式:
private static 返回值类型 方法名称(参数列表){方法体}
public interface MyInterfacePrivate {
public default void methodDefault1(){
System.out.println("这是接口默认方法1");
};
public default void methodDefault2(){
System.out.println("这是接口默认方法2");
methodCommon(); //应用方法直接调用可以解决重复代码问题
};
private void methodCommon(){
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
};
}
接口的私有方法使用
实现类
public class MyInterfacePrivateImpl implements MyInterfacePrivate{
//没有抽象方法则不需要使用覆盖重写
}
接口常量定义和使用
接口当中也可以定义“成员变量”,但是必须使用 public static final 三个关键字修饰。这就是接口的【常量】了
格式:
public static final 数据类型 常量名称 = 数据值;
注意;
1.一但使用final关键字表示 常量不可变。
2.接口必须赋值。
3.常量名称 推荐 使用大写因为不可变,多个用下划线_链接。
public interface MyInterfaceConst{
public static final int NUM=10;
}
//main方法中
System.out.println(MyInterfaceConst.NUM);
接口小结
1.成员变量 就是常量:
格式:public static final 数据类型 常量名称 = 数据值;
2.接口中最重要的就是抽象方法,
格式:public abstract 返回值类型 方法名称(参数列表);
注意:实现类必须覆盖重写接口中所有的抽象方法,除非实现类是抽象类。
3.接口允许使用默认方法。
格式:public default 返回值类型 方法名称(参数列表){方法体}
注意:默认方法也可以被覆盖重写。
4.允许使用静态方法。
格式:public static 返回值类型 方法名称(参数列表){方法体}
注意:应该通过接口名称进行调用,不能通过实现类对象进行调用接口静态方法。
5.允许使用私有方法
普通格式:private 返回值类型 方法名称(参数列表){方法体}
静态格式:private static 返回值类型 方法名称(参数列表){方法体}
注意:private 的方法只有接口自己才能调用。不能被实现类或别人使用