Java中的接口类似于类,但是接口的主体只能包含 抽象方法 和
final
字段(常量)。
最近,我看到一个问题,看起来像这样
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
根据接口定义, 仅 允许 使用抽象方法 。为什么它允许我编译以上代码?default
关键字是什么?
另一方面,当我尝试编写下面的代码时,它说 modifier default not allowed here
default class MyClass{
}
代替
class MyClass {
}
谁能告诉我default
关键字的目的?只能在接口内部使用吗?与default
(无访问修饰符)有什么区别?
这是Java 8中的一项新功能,可interface
提供一个实现。在Java 8
JLS-13.5.6中描述。读取(部分)接口方法声明
添加
default
方法,或改变的方法,由abstract
于default
,不破与预先存在的二进制兼容性,但可能会导致IncompatibleClassChangeError
如果一个预先存在的二进制尝试调用的方法。如果限定类型,T
是两个接口的子类型I
和J
,则会出现此错误,其中I
和都J
声明一个default
具有相同签名和结果的方法,而另一个I
也不J
是另一个子接口。
JDK 8的新增功能说(部分)
默认方法允许将新功能添加到库的接口,并确保与为这些接口的较早版本编写的代码二进制兼容。
问题内容: Java中的原生关键字是什么? 问题答案: 述关键字被应用于方法,以指示该方法是在本机代码使用JNI(Java本地接口)来实现。
问题内容: 在JavaScript中的关键字可能会相当混乱首次遇到它的时候,人们往往会认为JavaScript是不是面向对象的编程语言。 它是什么? 它解决什么问题? 什么时候合适,什么时候不合适? 问题答案: 它做五件事: 它创建一个新对象。这个对象的类型就是 object 。 它将这个新对象的内部不可访问的 [[prototype]] (即 proto )属性设置为构造函数的外部可访问 原型
问题内容: 来自标准库的文件包含围绕228行的以下几行代码: 在这种情况下是什么意思,或者通常是什么关键字? 问题答案: 是Swift 3中的新访问级别,随实现而引入 SE-0117允许区分公共访问权限和公共替代权限 从2016年8月7日开始,Swift 3快照和Xcode 8 beta 6都可以使用它。 简而言之: 在定义模块之外, 可以访问 和 可继承 一个类。一类成员是 可访问 和 可重写
问题内容: Java 13引入了 用于表达式的关键字。 如何使用它,与默认值或值有什么区别? 问题答案: 问答环节 如何使用? 需要完整块时,带有箭头标签: }; 使用传统积木: }; 默认收益有什么区别? 一条语句将控制权返回给 方法 (第8.4节,第§15.12节)或 构造函数 (第8.8节和第15.9节) 的调用者, 而一条语句则通过 使一个封闭的表达式产生一个指定值来转移控制权。 突破值有
在为android开发时,我有时会遇到类似这样的事情: 我不明白关键字有什么意义。
问题内容: 新的SwiftUI教程具有以下代码: 第二行单词和在其网站上被高亮显示,就像它是一个关键字一样。 Swift 5.1似乎没有作为关键字,而且我也看不出该词还有什么其他用处,因为它通常位于类型所在的位置。是否有Swift的未发布新版本?以某种我不知道的方式在类型上使用的函数吗? 关键字有什么作用? 问题答案: 是SE-0244引入的不透明结果类型,在带有Xcode 11的Swift 5.