接口就是一种公用的规范标准,符合规范标准,就可通用
定义接口:
格式
public interface 接口名称{//方法体}
接口中的内容:
1、常量
2、抽象方法
3、默认方法
4、静态方法
5、私有方法
一、接口定义抽象方法
注意事项:
1、接口中的抽象方法是固定的public abstract修饰的
2、public abstract是可以省略的,直接写返回值类型(参数列表);
使用步骤:
1、不能new,不能直接使用,必须有一个实现类来实现接口
2、实现类必须要覆盖重写接口中所有的抽象方法
3、创建实现类对象,并加以使用
注:若实现类没有复写接口中的所有抽象方法,那么这个实现类是抽象的
public interface MyInterface {
public abstract void methodA();
}
public class ImplementCla implements MyInterface{
@Override
public void methodA() {
System.out.println("A");
}
}
二、接口定义默认方法
格式:
[public] default 返回值类型 方法名(){}
注:默认方法能解决接口升级的问题
接口中添加新的方法,为了使已投入的代码能够继续使用,在接口里创建默认方法
1、接口的默认方法可通过实现类的对象直接调用
2、接口的默认方法可被实现类覆盖
3、创建实现类继承了默认方法,若实现类没有重写默认方法,会向上找到接口
//接口
public interface InterfaceDefault {
public abstract void method();
public default void method2(){
System.out.println("接口的默认方法");
}
}
//实现类覆盖了接口中所有的方法
public class InterfaceMethodA implements InterfaceDefault {
@Override
public void method() {
System.out.println("A复写了接口的抽象方法");
}
@Override
public void method2(){
System.out.println("A覆盖了默认方法");
}
}
//只覆盖了抽象方法,没覆盖默认方法
public class InterfaceMethodB implements InterfaceDefault {
@Override
public void method() {
System.out.println("B复写了接口的抽象方法");
}
}
public class MainInterface {
public static void main(String[] args) {
InterfaceMethodA methodA=new InterfaceMethodA();
methodA.method();
methodA.method2();
System.out.println("================");
InterfaceMethodB methodB=new InterfaceMethodB();
methodB.method();
methodB.method2();
}
}
运行结果
三、接口定义静态方法
格式:
public static 返回值类型 方法名(){}
使用方法:接口名.方法名();
实现类创建的对象不能调用
public interface MyInterfaceStatic {
public static void method(){
System.out.println("这是一个静态方法");
}
}
public class MyMainMethod {
public static void main(String[] args) {
MyInterfaceStatic.method();//接口名进行调用,不用创建实现类和实现类对象
}
}
四、接口定义私有方法
public interface ImplementPrivateStatic {
public static void methodA(){
commonmethod();
}
public static void methodB(){
commonmethod();
}
//只能让上面两个默认方法调用,不能让实现类调用
public static void commonmethod(){
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
}
}
共有方法只能让上面两个默认方法调用,不能让实现类调用,故应将公有方法私有化
1、普通私有方法
解决多个默认方法访问重要代码
private void commonmethod(){
System.out.println("AAA");
System.out.println("BBB");
System.out.println("CCC");
}
2、静态私有方法
public class MainPrivate {
public static void main(String[] args) {
ImplementPrivateStatic.methodA();
ImplementPrivateStatic.methodB();
}
}
五、接口中的成员变量(常量)
必须用 public static final进行修饰
格式:
public static final 数组类型 名称=数据值;
注:
1、public static final可省略
2、常量必须赋值
3、常量名称一般使用大写字母加下划线
网友评论