Java-接口

本文详细介绍了Java接口的特性,包括接口中成员变量和方法的默认修饰符,以及JDK1.8以后接口新增的静态方法和默认方法。示例展示了如何实现接口,包括默认方法的重写和冲突解决。此外,还提及了JDK9之后接口中的私有方法。
摘要由CSDN通过智能技术生成

用 interface 来定义。

接口中的所有成员变量都默认是由public static final修饰的。所以变量需要显示赋值。

接口中的所有方法都默认是由public abstract修饰的。

接口没有构造方法。因为构造方法有方法体{}

**在JDK1.8中,接口中的方法可以有方法体,但需要关键字static或者default来修饰。**静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。static修饰的方法不能重写,并且不能通过对象调用,只能通过接口类类名调用。

在JDK9后,接口中可以有私有静态方法和私有普通方法。

静态方法和默认方法都默认是public的。

public interface Car {
    void brand();

    String brand = "";

    public static void test1(){
        System.out.println("接口test1");
    }

    default void test2(){
        System.out.println("接口test2");
    }
}
public class BMW implements Car {
    @Override
    public void brand() {

    }
}
public class Benz implements Car{
    @Override
    public void brand() {

    }

    @Override
    public void test2() {
        System.out.println("实现类test2");
    }
}

默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。

public interface NewEnergy {
    void brand();

    String brand = "b";

    public static void test1(){
        System.out.println("接口test1");
    }

    default void test2(){
        System.out.println("接口test2");
    }
}
public class Tesla implements Car,NewEnergy {
    // 两个继承类中都有抽象方法brand和默认方法,所以需要重写
    @Override
    public void brand() {

    }

    @Override
    public void test2() {

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值