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



目录
相关文章
|
11月前
|
Java
【零基础学Java】—继承父类并实现多个接口(二十五)
【零基础学Java】—继承父类并实现多个接口(二十五)
|
6月前
|
设计模式 搜索推荐 Java
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
75 0
|
5月前
|
设计模式 存储 Java
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
26 0
|
6月前
|
Java
JavaSE碎碎念:抽象类继承被子类继承之后方法调用关系
JavaSE碎碎念:抽象类继承被子类继承之后方法调用关系
|
6月前
|
Java 编译器
【Java 抽象类&抽象方法】什么是抽象类&方法,如何定义,起什么作用?
【Java 抽象类&抽象方法】什么是抽象类&方法,如何定义,起什么作用?
|
Java
java学习第十三天笔记-面向对象242-子类能继承父类的那些内容1构造方法不能被继承下来
java学习第十三天笔记-面向对象242-子类能继承父类的那些内容1构造方法不能被继承下来
51 0
java学习第十三天笔记-面向对象242-子类能继承父类的那些内容1构造方法不能被继承下来
|
Java
java学习第十三天笔记-面向对象244-子类能继承父类的那些内容3成员方法是否被继承
java学习第十三天笔记-面向对象244-子类能继承父类的那些内容3成员方法是否被继承
61 0
java学习第十三天笔记-面向对象244-子类能继承父类的那些内容3成员方法是否被继承
|
Java
java学习第十三天笔记-面向对象243-子类能继承父类的那些内容2成员变量被继承下来
java学习第十三天笔记-面向对象243-子类能继承父类的那些内容2成员变量被继承下来
75 0
java学习第十三天笔记-面向对象243-子类能继承父类的那些内容2成员变量被继承下来
|
Java
java学习第十三天笔记-面向对象249-继承中成员方法和成员变量的特点-利用方法的重写去设计继承结构
java学习第十三天笔记-面向对象249-继承中成员方法和成员变量的特点-利用方法的重写去设计继承结构
85 0
java学习第十三天笔记-面向对象249-继承中成员方法和成员变量的特点-利用方法的重写去设计继承结构