0
点赞
收藏
分享

微信扫一扫

你知道吗?这6款AI工具能彻底改变你的工作方式!

自由的美人鱼 2024-11-09 阅读 4

接口中的属性默认有:static final 修饰符修饰;

定义的方法默认是抽象方法;在jdk1.8中可以写默认方法和静态方法;

一、默认方法

允许在接口中提供方法的默认实现,这样实现类就不必实现这些方法,除非需要自定义行为。这一特性通过在方法前加上 default 关键字来实现。

定义语法: 

interface InterfaceName{

default returnType methodName(arg-list){ }

}

默认的访问修饰符是public

interface A{
default void test(){
System.out.println("Default Method test in A");
}
}

两大优势:

  1. 可以让接口更优雅的的升级,减少使用人员操作的负担;

    不必随着接口方法的实现,从而修改实现代码,因为默认方法在子类用可以不用实现;

  2. 可以让实现类中省略很多不必要的方法的空实现;

 

接口继承与默认方法的冲突:

例如:一个类C,实现两个接口A、B,其中接口B继承接口A

interface A{
default void test(){
System.out.println("A");
}
}

interface B extends A{
default void test(){
System.out.println("B..");
}
}

class C implements A,B{
public static void main(String[] args) {
C c=new C();
c.test();
}
}

//运行结果:
B..

方法调用的判断规则:

  • 类中声明的方法优先级最高:类或父类中声明的方法要高于任何默认方法的优先级;
  • 如果无法根据第一条进行判断,那么子接口的优先级更高;例如:B接口继承了A接口,那么B接口就比A接口更具体,优先级更高;
  • 最后,- 还是无法判断,那么继承了多个接口的类,必须通过重写方法来确定方法的调用;

二、静态方法

静态方法属于接口本身,而不是实现类。静态方法可以直接通过接口名调用。

interface InterfaceName{
static returnType methodName(arg-list){
//代码实现
}
}

// 访问
InterfaceName.methodName();

三、私有方法 

从Java 9开始,接口中还可以定义私有方法。

  • 私有方法可以用于重用代码,避免重复实现逻辑。
  • 私有方法只能在接口内部被调用,不能被实现类或其他外部类访问。 
public interface MyInterface {
private void privateMethod() {
System.out.println("This is a private method.");
}

default void usePrivateMethod() {
privateMethod();
}
}
举报

相关推荐

0 条评论