`
jobar
  • 浏览: 341667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

缺省方法(2)-Java中缺省方法会引入多重继承吗?

 
阅读更多
Java中缺省方法会引入多重继承吗?

不会,因为多重继承已经存在于Java中了。接口类型的多重继承从一开始一直是语言的一个特点。缺省方法确实引入了一种新的多重继承即多重继承行为。Java将依然不会有多重继承的状态,就像C++那样。

这里是多重继承行为的一个例子。新的接口java.util.Sized声明了方法size和sEmpty并提供了后者的默认实现:
   
public interface Sized { 
        public default boolean isEmpty() { 
            return size() == 0; 
        } 
        public int size(); 
    } 

新接口java.util.Traversable<T>声明了方法forEach并提供了一个默认的实现:
   
public interface Traversable<T> { 
        public default void forEach(Block<? super T> block) { 
            for (T t : this) { 
                block.apply(t); 
            } 
        } 
    } 

假设我们现在声明一个类SimpleCollection<T>并为其提供iterator和size的实现:

   
class SimpleCollection<T> implements Sized, Traversable<T> { 
        public Iterator<T> iterator() { ... } 
        public int size() { ... } 
    } 

然后,给定一个声明
   
SimpleCollection<String> sc = new SimpleCollection<>();


编译下面的语句:
Sized s = sc;                        // SimpleCollection是Sized的子类型 
    Traversable<String> t = sc;          // SimpleCollection是Traversable的子类型
    System.out.println(sc.isEmpty());    // isEmpty是来自Sized接口缺省实现
    sc.forEach(System.out::println);     // forEach是来自Traversable的缺省实现


原文链接:http://www.lambdafaq.org/do-default-methods-introduce-multiple-inheritance-to-java/
分享到:
评论

相关推荐

    从关联理论看翻译中文化缺省问题---英语论文精修.docx

    从关联理论看翻译中文化缺省问题---英语论文精修.docx

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    2.如何关闭缺省工具栏?(Visual C++编程 源代码)

    2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭...

    Thinking in java4(中文高清版)-java的'圣经'

    2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java中的数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 创建新的数据类型:类 2.4.1 域和方法 ...

    Java中事务的实现

    在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...

    21.如何关闭缺省状态栏?(Visual C++编程 源代码)

    21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何...

    java反编译工具 jad

    反编译工具jad简单用法 jad 是应用最广泛的java 反编译工具;... 这条指令将当前目录下的javatest.class反编译为javatest.java并保存在c:\\javasource目录里,其中的提示输出为中文,而不是Unicode代码。

    Java面试宝典-经典

    81、java中会存在内存泄漏吗,请简单描述。 53 82、能不能自己写个类,也叫java.lang.String? 57 83. Java代码查错 57 二. 算法与编程 61 1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt...

    JAVA面试题最全集

    9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中...

    Python 缺省参数-指定函数缺省参数的默认值

    Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。 Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于...

    决不要重新定义继承而来的缺省参数值

    决不要重新定义继承而来的缺省参数值,由权威的Effective C++讲述!

    java 面试题 总结

    忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 25、short s1 = 1; s1 =...

    Java开发技术大全(500个源代码).

    inheritConstruct_2.java 构造器继承示例2 inheritConstruct_3.java 构造器继承示例3 inheritConstruct_4.java 构造器继承示例4 inheritConstruct_5.java 构造器继承示例5 inheritConstruct_6.java 构造器继承...

    缺省适配器模式 Java实现 IDEA工程

    要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样汪汪叫,像狗一样快跑,或者像鸟一样叽叽...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    p1 调用缺省的构造方法(即没有参数),p2 则调用带参数的构造方法。p1、p2 分别对 应于不同的内存空间,它们的值是不同的,可以完全独立地分别对它们进行操作。虽 然 new 运算符返回对一个对象的引用,但与 C、C++中的...

    java基础题 很全面

    56. java中会存在内存泄漏吗,请简单描述。 14 57. java中实现多态的机制是什么? 14 58. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 14 59. 静态变量和实例...

    JAVA 2平台安全技术-结构,API设计和实现

    本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...

    jre-8u371-windows-x64

    Java Plug-in软件允许Java Applet和JavaBean组件在使用Sun的Java Runtime Environment(JRE)的浏览器中运行,而不是在使用缺省的Java运行环境的浏览器中运行。Java Plug-in可用于Netscape Navigator和Microsoft ...

    java jdbc 数据库 mysql oracle pgsql 驱动

    驱动程序包名:mysql-connector-Java-3.1.11-bin.jar 驱动类的名字:com.mysql.jdbc.Driver JDBC URL:jdbc:mysql://dbip:port/databasename 说明:驱动程序包名有可能会变 JDBC URL其中各个部分含义如下: dbip –...

    java源码包2

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

Global site tag (gtag.js) - Google Analytics