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



目录
相关文章
|
4月前
|
搜索推荐 数据可视化 数据挖掘
点晴OA系统:用户体验至上,操作简单易上手
在数字化转型的浪潮中,企业选择办公自动化(OA)系统时,除了关注功能强大与否,更看重系统的用户体验。一个操作复杂、学习成本高的系统,不仅会降低员工的工作效率,还可能影响企业的整体运营。点晴OA系统以“用户体验至上”为核心理念,致力于打造操作简单、易上手的办公平台,帮助企业快速实现高效办公。
79 1
|
8月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现深度学习模型:智能质量检测与控制 【10月更文挑战第8天】
639 62
使用Python实现深度学习模型:智能质量检测与控制
|
SQL 存储 算法
clickhouse SQL优化
clickhouse 是 OLAP 数据库,但其具有独特的索引设计,所以如果拿 MySQL 或者其他 RDB 的优化经验来优化 clickhouse 可能得不到很好的效果,所以特此单独整理一篇文档,用于有 SQL 优化需求的同学,本人接触 clickhouse 时间也不长,难免有不足的地方,如果大家发现错误,还请不吝指正。
83728 3
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
984 0
|
JavaScript 前端开发
JavaScript模块化
模块化是一种将代码按照一定规则组织成独立、可复用的单元的方式。模块化可以将一个复杂的系统分解为多个独立的模块,每个模块只关注自己的功能,与其他模块之间的耦合度低,从而提高代码的可维护性、复用性和扩展性。
|
网络协议 测试技术 Go
实现接口和继承比较(2) | 学习笔记
快速学习实现接口和继承比较(2)
实现接口和继承比较(2) | 学习笔记
|
机器学习/深度学习 存储 人工智能
程序员必备的一些数学基础知识
作为一个标准的程序员,应该有一些基本的数学素养,尤其现在很多人在学习人工智能相关知识,想抓住一波人工智能的机会。很多程序员可能连这样一些基础的数学问题都回答不上来。以下文章会给你答案。
313 0
程序员必备的一些数学基础知识
|
8天前
|
数据采集 自然语言处理 搜索推荐
基于Qwen3的Embedding和Rerank模型系列,开源!
近年来,随着大规模预训练语言模型(LLM)的飞速发展,文本嵌入(Embedding)和重排序(Reranking)技术在搜索引擎、问答系统、推荐系统等多个领域的重要性愈发凸显。
942 81