java基础:接口知识,深入浅出

接口概念与使用步骤

接口就是一种公共的规范标准
接口就是多个类的公共规范,接口是一种引用数据类型,最重要的内容就是其中的抽象方法
定义一个接口的格式:
public interface 接口名{
//接口内容
}
备注:换成关键字interface之后,编辑生成的字节码文件仍然是:.java->.class
在Java 7版本中,接口包含:
抽象方法,常量
在Java 8版本中,接口增加了:
默认方法,静态方法
在Java 9版本中,接口增加了:
私有方法
所以java中现在含有的接口内容一共有五个。
接口的使用步骤:
1.接口不能直接使用,需要有一个"实现类"来"实现"该接口.(类似于继承)
格式:public class 实现类名 implements 接口名{
}
2.接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。
3.创建实现类的对象,进行使用

抽象方法的定义与使用

接口中的抽象方法定义格式:
public abstract 返回值类型 方法名(参数列表);
注意事项:
1.接口中的抽象方法,修饰符必须是两个固定的关键字:public abstract
2.这两个关键字可以省略不写,但是还是抽象方法。
3.方法的三要素可以随意定义。
4.么有方法体
抽象方法的使用步骤:
1.接口不能直接使用,需要有一个"实现类"来"实现"该接口.(类似于继承)
格式:public class 实现类名 implements 接口名{
}
2.接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。
3.创建实现类的对象,进行使用
注意事项:如果实现类并没有把这个接口的方法全部重写会报错,除非他自己是抽象类

package demo;

public class Demo01Interface {
    public static void main(String[] args) {
        InterfaceAbstractImpl inter = new InterfaceAbstractImpl();
        inter.method();
    }
}
package demo;

public interface InterfaceAbstract {
     public abstract void method();//抽象方法
}
package demo;

public class InterfaceAbstractImpl implements InterfaceAbstract {

    @Override
    public void method() {
        System.out.println("方法执行啦!");
    }
}

默认方法的定义和使用

java8 中的默认方法
格式:
public default 返回值类型 方法名称(参数列表){
方法体
}
备注:接口当中的默认方法,用来解决接口升级的问题。
1.接口的默认方法,可以通过接口实现类对象,直接调用
2.接口的默认方法,也可以被接口实现类进行覆盖重写
对于接口中写好的方法,想要给接口添加一些新的方法,不用改实现类,直接用默认方法在接口中写入

  • 它自身具有方法体,所以可以直接在对象中使用
public class Demo02InterfaceDefault {
    public static void main(String[] args) {
        InterfaceDefaultImpl inter = new InterfaceDefaultImpl();
        inter.method();
        inter.method2();//可以在对象中直接调用
    }
}
public interface InterfaceDefault {
    public abstract void method();//定义了第一个抽象方法

    public default void method2(){
        System.out.println("新的默认方法执行啦");
    }
}
package demo;

public class InterfaceDefaultImpl implements InterfaceDefault {
    @Override
    public void method(){
        System.out.println("方法执行");
    }
}

静态方法的定义与使用

从java8开始,接口中允许定义静态方法
格式:
public static 返回值类型 方法名称(参数列表){
方法体
}
提示:就是将abstract或者default换成static即可,带上方法体。
静态方法使用:

  • 注意事项:不能通过接口实现类的对象来调用接口中的静态方法
  • 正确用法:通过接口名称,直接调用其中的静态方法。
  • 格式:接口名.静态方法名(参数);
public class Demo03InterfaceStatic {
    public static void main(String[] args) {
        InterfaceStatic.method();//直接点静态方法
    }
}
public interface InterfaceStatic {
    //静态方法的定义
    public static void method(){
        System.out.println("静态方法执行");
    }
}
package demo;

public class InterfaceStaticImpl implements InterfaceStatic{
}

私有方法的定义与使用

问题描述:
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题
但是这个共有方法不应该让实现类使用。应该是私有化的
解决方案:
从java9开始,接口允许定义私有方法。
1.普通私有方法,解决多个默认方法之间重复代码问题
格式:private 返回值类型 方法名称(参数列表){
方法体
}
2.静态私有方法,解决多个静态方法之间重复代码问题
格式:
private static 返回值类型 方法名(参数列表){
方法体
}
私有方法只有接口自己可以调用

package demo;

public class Demo04InterfacePrivate {
    public static void main(String[] args) {
        InterfacePrivateImpl inter = new InterfacePrivateImpl();
        inter.method1();
        inter.method2();
    }
}
package demo;

public interface InterfacePrivate {
    public default void method1(){
        System.out.println("默认方法启动");
        methodPrivate();
    }
    public default void method2(){
        System.out.println("默认方法启动");
        methodPrivate();
    }
    private void methodPrivate(){
        System.out.println("aaa");
        System.out.println("bbb");
        System.out.println("ccc");
    }
}
package demo;

public class InterfacePrivateImpl implements InterfacePrivate {
}

接口注意事项

1.接口是没有静态代码块和构造方法的
2.一个类的直接父类是唯一的,但是可以有多个接口
格式:public class MyClass extends Fu implement InterfaceA,InterfaceB(){
//覆盖重写所有抽象方法

3.如果实现类实现的多个接口中,有重复的抽象方法,只需要覆盖重写一次
4.如果实现类没有覆盖重写接口的所有抽象方法,那么实现类一定是个抽象类
5.如果实现类实现的多个接口中,有重复的默认方法,那么实现类一定对重复的方法进行重写。
6.一个类,如果直接父类当中的方法,与接口中的方法冲突,那么优先会使用父类的方法。

  • 类与类之间是单继承的,直接父类只有一个
  • 类与接口之间是多实现的,可以有多个接口
  • 接口与接口之间是多继承的
    注意事项:
    1.如果多个父接口中有抽象方法重复,没关系。因为没有方法体。
    2.如果多个父接口中有默认方法重复,有关系。子接口必须进行默认方法的重写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值