JavaSE——面向对象高级二(4/4)-接口的其他细节-三个新方法(默认方法、私有方法、静态方法),接口的多继承

简介: JavaSE——面向对象高级二(4/4)-接口的其他细节-三个新方法(默认方法、私有方法、静态方法),接口的多继承

接口的其他细节——第一点JDK8以后是新增的三个接口内的方法,第二是接口的多继承,最后是了解一下接口使用时的注意事项。


三个新方法

注意:接口内的实例方法因为是对象的方法,而接口本身不能创建对象,所以需要通过实现类的对象来访问。

默认方法

  • 使用default修饰的接口内方法,且默认会被public修饰

可以拥有方法体,在接口内也相当于实例方法。

例如:

package user.interfaceDemo;
 
public interface A {
    default void test1(){ //等同于 public default void test1(){}
        System.out.println("默认方法");
    }
}

私有方法

  • 必须使用private修饰的方法(JDK 8 开始才支持的)

与默认方法一样,也可以拥有方法体,但不能被外部访问,只能在内部进行访问。

例如:

package user.interfaceDemo;
 
public interface A {
    default void test1(){ //等同于 public default void test1(){}
        System.out.println("==默认方法==");
        test2();
    }
 
    private void test2(){
        System.out.println("==私有方法==");
    }
}

静态方法

  • 必须使用static修饰的方法,默认会被public修饰
package user.interfaceDemo;
 
public interface A {
    static void test3(){
        System.out.println("==静态方法==");
    }
}

JDK8开始,接口中为啥要新增这些方法?


  • 增强接口的能力,更便于项目的扩展和维护
  • 例如某些情况下,一个接口被很多的类实现了,此时给接口添加一个新方法的话,所有实现了这个接口的类都要去一个一个地重写这个新方法;需求中如果只是单独的一个类或少数的类需要重写该方法,那么就可以使用这些新方法。

接口的多继承

  • 一个接口可以同时继承多个接口
public interface C extends B,A{
}

接口多继承的作用

  • 便于实现类去实现

例如:

interface B{
    void test1();
}
interface C{
    void test2();
}
interface D{}
interface E extends B,C{}
 
class c implements E{
 
    @Override
    public void test1() {
        
    }
 
    @Override
    public void test2() {
 
    }
}

使用接口的注意事项【了解】

  1. 一个接口继承多个接口,如果多个接口中存在方法签名冲突,则此时不支持多继承。
  2. 一个类实现多个接口,如果多个接口中存在方法签名冲突,则此时不支持多实现。
  3. 一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先用父类的。
  4. 一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。

END



目录
相关文章
|
7月前
|
设计模式 搜索推荐 Java
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
82 0
|
3月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
6月前
|
Java 编译器
JavaSE——面向对象基础(2/4)-this关键字、构造器(this的执行原理、应用场景,构造器的特点、应用)
JavaSE——面向对象基础(2/4)-this关键字、构造器(this的执行原理、应用场景,构造器的特点、应用)
39 5
|
6月前
|
Java
Java编程不再难:一文看懂抽象类与接口的区别和联系!
【6月更文挑战第17天】在Java OOP中,抽象类与接口助你构建复杂应用。以图书管理系统为例,抽象类`Book`作为基类提供共享属性和方法,不直接实例化。接口如`HasChapters`和`HasIssues`定义特殊行为。抽象类支持部分实现,单继承,适合共享行为;接口仅含常量和抽象方法,多实现,强调行为规范。通过继承和实现,实现代码复用和系统扩展性。理解两者异同,是提升Java编程能力的关键。
47 0
|
6月前
|
设计模式 存储 Java
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
33 0
|
设计模式 自然语言处理 C#
C#OOP之八 继承 接口和抽象类
C#OOP之八 继承 接口和抽象类
57 0
|
7月前
|
Java
JavaSE碎碎念:抽象类继承被子类继承之后方法调用关系
JavaSE碎碎念:抽象类继承被子类继承之后方法调用关系
|
Java
Java面向对象—抽象类和接口
Java面向对象—抽象类和接口
107 0
下一篇
DataWorks