什么是接口之接口的几种方法。


前言

我们学习java的时候总是能听到接口这个关键字,那么到底什么是接口呢?

一、什么是接口?

生活中的接口举例:
在这里插入图片描述
电源接口都是一样的符合国际标准,可以说接口就是公共的规范标准。比如我们的USB接口,苹果电脑和联想电脑的接口是通用的甚至夜读灯,USB小风扇的接口也是通用的。
在这里插入图片描述
那么java里的接口有什么含义呢?
1.接口就是多个类的公共资源
2.接口就是一种引用的数据类型,最重要的就是其中的抽象方法
接口的定义格式

public interface interface_name{
    
    
   //接口内容
}

注:换成interface定义之后,编译生成的字节码文件仍然是:
.java -->.class
如果是java7,那么接口中包含的内容有:
1.常量
2.抽象方法
如果是java8,还可以额外包含有:
3.默认方法
4.静态方法
如果是java9,还可以额外包含有:
5.私有方法

二、创建一个接口

在这里插入图片描述
在这里插入图片描述

1.定义一个抽象方法

public interface MyInterence {
    
    
    public abstract void methodAbs();//这是一个抽象方法
    //抽象方法的修饰符必须是两个固定的关键字 public abstract,或者习惯性省略
    public  void methodAbs2();
    abstract void methodAbs3();
    void  methodAbs4();
    //以上都是抽象方法
    
}

接口的使用步骤
1.接口不能直接使用,必须有一个实现类来实现该接口
public class 实现类名称 implements 接口名称{
//…
}
2.接口的实现类必须覆盖重写(实现)所有的抽象方法。
去掉abstract关键字,加上方法体大括号。
3.创建实现类的对象,进行使用。
在这里插入图片描述
这里引用了实现类之后,需要覆盖重写接口里的所有抽象方法才不会报错。
注意:创建实现类的对象,进行使用,不可以创建接口的对象在这里插入图片描述
在这里插入图片描述

2.定义一个默认方法

因为从java8开始就允许接口添加默认方法,那么默认方法的作用是什么呢?就比如你定义了两个抽象方法,然后被两个类引用了,那两个类文件已经被应用了,但是如果你此时再添加一个抽象方法到接口里,那么类文件就会报错。因为类需要引用接口的所有抽象方法。为了防止这种情况的发生我们可以定义默认方法。
在这里插入图片描述
上面就是定义默认方法的代码,这时引用接口的类并不会报错。

 public static void main(String[] args) {
    
    
       Myinterfacemle cl = new Myinterfacemle();
       cl.methodDefault();

    }

我们这里可以直接使用引用类new一个对象,然后对象时可以直接使用默认方法的。这里可以是任何一个引用类,new了新对象之后都可以直接使用默认方法。

3.定义一个静态方法

从java8开始,接口当中允许定义静态 方法
静态方法的含义就是
比如有一个学生类,小红小明可以使用这个方法,但是跟他俩都没关系,跟这个类有关系。

  public static void methodsta(){
    
    
         System.out.println("这是一个静态方法");
     }

这是在接口中创建静态方法的例子,但是我们不可以直接通过实现类的对象直接引用静态方法
在这里插入图片描述
我们可以直接通过接口名称直接调用静态方法

  public static void main(String[] args) {
    
    
             MyInterence.methodsta();
    }

可以直接通过接口来调用静态方法

4.定义一个私有方法

我们有时在打代码时,可能会有重复代码的情况,那么我们如何在接口中解决这个问题呢?

public interface MyInterence {
    
    
    public abstract void methodAbs();//这是一个抽象方法
    //抽象方法的修饰符必须是两个固定的关键字 public abstract,或者习惯性省略
     public default void methodDefault1(){
    
    
         System.out.println("这是一个新添加的默认方法");
         com();
     }
    public default void methodDefault2(){
    
    
        System.out.println("这是一个新添加的默认方法");
        com();
    }
    public default void com(){
    
    
        System.out.println("aaa");
        System.out.println("bbb");
        System.out.println("bbb");
    }
}

我们可以通过引用com()方法来解决重写代码的情况,那么这样写对吗?这样是不可以的我们需要用私有方法来解决重复代码问题
1.普通私有方法,解决多个默认方法之间的代码重复问题
格式:private 返回值类型 方法名称(参数列表){
方法体
}
2.静态私有方法,解决多个静态方法之间的代码重复问题
private static 返回值类型 方法名称(参数列表){
方法体
}
所以需要将代码改成这种情况

public interface MyInterence {
    
    
    public abstract void methodAbs();//这是一个抽象方法
    //抽象方法的修饰符必须是两个固定的关键字 public abstract,或者习惯性省略
     public default void methodDefault1(){
    
    
         System.out.println("这是一个新添加的默认方法");
         com();
     }
    public default void methodDefault2(){
    
    
        System.out.println("这是一个新添加的默认方法");
        com();
    }
    private void com(){
    
    
        System.out.println("aaa");
        System.out.println("bbb");
        System.out.println("bbb");
    }
}

总结

接口的方法现在已经说完了,下面会写关于接口的其他内容。

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/108772257