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开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引: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.lang.Object`类。这意味着即使程序员没有明确指定任何继承关系,每个自定义类也会默认继承自`Object`类。这种继承关系构成了类之间的层次结构。 - **父类(超类)/...
【文化缺省】在翻译中,文化缺省是指原文中隐含的文化背景、习俗或知识,这些在目标语言文化中可能不为人知。处理文化缺省需要译者具有丰富的跨文化知识,有时需要添加注释或采用等效替换,以使目标读者能理解并接受...
**概念:** 在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.如何关闭...
在Java中,继承具有以下特点: 1. 单继承:不同于C++等语言,Java仅支持单继承,即一个子类只能直接继承一个父类。这使用关键字`extends`来表示,例如`class ChildClass extends ParentClass`。这样的设计减少了...
本文将深入探讨Java中的继承和多态。 1. **继承** - **继承的概念**:继承是类之间的一种关系,允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以看作是父类的扩展,它继承了父类的所有非私有成员...
JAVA中的继承与抽象 继承是面向对象编程的基本特征之一,它允许在已有的类基础上创建新的类,并继承已有类的成员变量和成员方法。继承的概念定义是:当类与类之间存在相同(共性)的内容,并满足子类是父类中的一种...
Tomcat是Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 Tomcat的...
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...
在编程语言中,函数参数缺省与重载是两种提高代码可读性和灵活性的重要机制。首先,我们来探讨函数重载。函数重载允许在同一个作用域内定义多个同名函数,但这些函数的参数列表必须有所不同,通常体现在参数数量或...
本文旨在深入探讨OSPF网络中如何有效地发布缺省路由,包括普通区域、STUB区域、完全STUB区域以及NSSA区域中的具体实施方法。 #### OSPF缺省路由的基础知识 首先,理解缺省路由的生成方式至关重要。在OSPF中,缺省...
* 设置对象中的成员变量和方法的访问权限(public,private,protected,缺省) * 提供一个统一供其他类引用的访问接口,如一些 public 方法 * 其他对象不能直接修改本对象所拥有的私有属性和私有方法 * 包:类空间的...
但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。 4. 抽象类的用途是设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性;设计出的类也具有更加良好的可扩展...
在C或C++中调用JAVA方法是一种常见的跨语言交互技术,主要依赖于Java Native Interface (JNI)。JNI是Java平台的一部分,它允许Java代码和其他语言编写的代码进行交互,从而实现混合编程。JNI提供了丰富的API,使得...
综上所述,这份作业答案覆盖了Java中的多个核心概念,包括但不限于继承、方法重写、访问控制、类的实例化等。这些知识点对于初学者来说至关重要,能够帮助他们建立起对Java编程语言的基础理解和应用能力。
在Swift或Objective-C中,我们可以通过设置UIViewController的视图层次结构,或通过UITableViewDataSource和UITableViewDelegate的方法来动态切换显示缺省页和实际内容。对于更复杂的交互,可以使用Storyboard或XIB...