`
jobar
  • 浏览: 347413 次
  • 性别: 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/
分享到:
评论

相关推荐

    Java继承习题

    ### Java继承习题知识点解析 #### 一、基础概念与选择...通过以上解析,我们对Java中的继承、方法重载、访问控制等概念有了更深入的理解。这些知识点是Java编程中的基础知识,对于理解和编写复杂的Java程序至关重要。

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

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

    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编程语言入门 Java语言基础教程 第06课 oop2 Java的面向对象编程-继承、接口、包 共37页.pdf

    在Java中,所有的类都是直接或间接地继承自`java.lang.Object`类。这意味着即使程序员没有明确指定任何继承关系,每个自定义类也会默认继承自`Object`类。这种继承关系构成了类之间的层次结构。 - **父类(超类)/...

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

    【文化缺省】在翻译中,文化缺省是指原文中隐含的文化背景、习俗或知识,这些在目标语言文化中可能不为人知。处理文化缺省需要译者具有丰富的跨文化知识,有时需要添加注释或采用等效替换,以使目标读者能理解并接受...

    JAVA继承_接口_抽象类等练习.doc

    **概念:** 在Java中,一个类可以通过`extends`关键字继承另一个类,从而获得父类的所有公共成员变量和方法。 **选择题示例:** 第11题中,正确答案是D选项:“class B extends A”。这是因为Java中类的继承通过`...

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

    ### 决不要重新定义继承而来的缺省参数值 在C++编程中,遵循最佳实践对于维护代码质量和可预测性至关重要。本篇文章聚焦于“决不要重新定义继承而来的缺省参数值”的原则,该原则出自权威指南《Effective C++》。...

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

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

    Java的继承机制详解

    在Java中,继承具有以下特点: 1. 单继承:不同于C++等语言,Java仅支持单继承,即一个子类只能直接继承一个父类。这使用关键字`extends`来表示,例如`class ChildClass extends ParentClass`。这样的设计减少了...

    Java中的继承和多态.pdf

    本文将深入探讨Java中的继承和多态。 1. **继承** - **继承的概念**:继承是类之间的一种关系,允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以看作是父类的扩展,它继承了父类的所有非私有成员...

    JAVA中的继承与抽象

    JAVA中的继承与抽象 继承是面向对象编程的基本特征之一,它允许在已有的类基础上创建新的类,并继承已有类的成员变量和成员方法。继承的概念定义是:当类与类之间存在相同(共性)的内容,并满足子类是父类中的一种...

    Java Tomcat面试题

    Tomcat是Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 Tomcat的...

    Java中事务的实现

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

    函数参数缺省与重载,命名和缺省规则

    在编程语言中,函数参数缺省与重载是两种提高代码可读性和灵活性的重要机制。首先,我们来探讨函数重载。函数重载允许在同一个作用域内定义多个同名函数,但这些函数的参数列表必须有所不同,通常体现在参数数量或...

    ospf中关于缺省路由的发布总结

    本文旨在深入探讨OSPF网络中如何有效地发布缺省路由,包括普通区域、STUB区域、完全STUB区域以及NSSA区域中的具体实施方法。 #### OSPF缺省路由的基础知识 首先,理解缺省路由的生成方式至关重要。在OSPF中,缺省...

    JAVA封装继承与多态PPT教案学习.pptx

    * 设置对象中的成员变量和方法的访问权限(public,private,protected,缺省) * 提供一个统一供其他类引用的访问接口,如一些 public 方法 * 其他对象不能直接修改本对象所拥有的私有属性和私有方法 * 包:类空间的...

    第4章-Java语言与面向对象作业习题与答案.doc

    但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。 4. 抽象类的用途是设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性;设计出的类也具有更加良好的可扩展...

    在C或C++中调用JAVA方法

    在C或C++中调用JAVA方法是一种常见的跨语言交互技术,主要依赖于Java Native Interface (JNI)。JNI是Java平台的一部分,它允许Java代码和其他语言编写的代码进行交互,从而实现混合编程。JNI提供了丰富的API,使得...

    Java的第二章作业答案

    综上所述,这份作业答案覆盖了Java中的多个核心概念,包括但不限于继承、方法重写、访问控制、类的实例化等。这些知识点对于初学者来说至关重要,能够帮助他们建立起对Java编程语言的基础理解和应用能力。

    ios-全局缺省页.zip

    在Swift或Objective-C中,我们可以通过设置UIViewController的视图层次结构,或通过UITableViewDataSource和UITableViewDelegate的方法来动态切换显示缺省页和实际内容。对于更复杂的交互,可以使用Storyboard或XIB...

Global site tag (gtag.js) - Google Analytics