随着对默认接口方法的支持越来越接近完成,一些潜在的问题被提了出来。虽然已经完成了很多工作,但这是一个复杂的特性,许多细节问题还没有解决。但首先,这里有一些已解决的问题。

接口允许使用 static 和 const 字段了。

除 == 和!= 之外的操作符也可以在接口中实现。在类中定义的操作符总是优先于接口中定义的操作符,即使接口中定义的操作符更具体。同样,接口中适用的操作符会覆盖基接口中的操作符。

现在,在调用基类方法时可以跳过类了,下面这段话证实了这一点:

我们认为,我们已经批准使用新的 base(Type) 语法,其中,Type 是类类型(例如,跳过一个基类并调用基类的基类),但是我们应该明确地确认这一点。我们还应该确认 base(Type).M() 可能引用一个非虚成员 M。我们还应该确认一个可访问性需求:这个查找找到的 M 必须在调用发生的地方可访问(即通常的名称查找约束)。

在接口中声明受保护方法的特性仍然存在一些疑问,尽管它暂时得到了批准。

当一个类实现了一个方法,但是它的子类将其标记为抽象方法,这被称为“重新抽象(reabstraction)”。这是 Java 互操作性必需的,但是确切的语法仍然没有确定。本质上,问题是是否需要 abstract 关键字。此外,他们“需要确保运行时 [团队] 同意实现重新抽象”。

接口中的普通属性是抽象的,尽管它们看起来像类中自动实现的属性。但是,如果属性是静态的,它就不能是抽象的。这是否意味着在默认情况下,接口中声明的静态属性是自动实现的?

类中的分部方法被认为是私有的,因为它们没有可访问性修饰符。但是在接口中,缺少可访问性修饰符意味着该方法是公共方法。接口中分部方法的规则是什么?它们允许、不允许还是需要 private 关键字?

在默认方法中,object.MemberwiseClone() 是否可以访问?

最后,是否应该将该特性的正式名称命名为 RuntimeFeature.DefaultInterfaceImplementation?答:“LDM 并不关心它的名称。”

原文地址:https://www.infoq.cn/article/PAjZCRpqd_dchsMKTTg2


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

C# 默认接口方法更新完成,很多细节问题尚待解决相关推荐

  1. C#和F#默认接口方法更新

    "默认接口方法(Default Interface Methods)"特性提案将允许C#.F#及其他.NET语言实现有限形式的多继承.受Java的默认方法启发,库作者将可以向已发布 ...

  2. C# 8: 默认接口方法

    翻译自 John Demetriou 2018年8月4日 的文章 <C# 8: Default Interface Methods>[1] C# 8 之前 今天我们来聊一聊默认接口方法.听 ...

  3. 如何在 C# 8 中使用默认接口方法

    C# 8 中新增了一个非常有趣的特性,叫做 默认接口方法 (又称虚拟扩展方法),这篇文章将会讨论 C# 8 中的默认接口方法以及如何使用. 在 C# 8 之前,接口不能包含方法定义,只能在接口中定义方 ...

  4. C# 8中的默认接口方法

    \ 关键要点 \\ 默认接口方法已经被包含在C# 8的新功能建议中,开发人员可以像使用trait那样使用默认方法.\\t trait是面向对象的编程技术,用于提升不相关类之间方法的重用性.\\t C# ...

  5. win7 打印机状态正常无法打印的解决方法(更新补丁后打印机无法打印的解决方法)

    win7 打印机状态正常无法打印的解决方法(更新补丁后打印机无法打印的解决方法): 经过测试 打印机是日常办公过程中非常重要的设备.有些win7旗舰版用户在Windows Update更新补丁后,发现 ...

  6. C# 8.0 的默认接口方法

    例子 直接看例子 有这样一个接口: 然后有三个它的实现类: 然后在main方法里面调用: 截至目前,程序都可以成功的编译和运行. IPerson接口变更 突然,我想对所有的人类添加一个新的特性,例如, ...

  7. Java22-day13【Lambda表达式(标准格式、练习、注意事项)、接口组成更新(默认-静态-私有方法)、方法引用(构造器)】

    视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...

  8. 【JavaSE】Lambda表达式、接口组成更新、方法引用

    文章目录 1. Lambda表达式 1.1 Lambda表达式初体验 1.2 Lambda表达式的基本格式 1.3 Lambda表达式练习 1.4 Lambda表达式的省略规则 1.5 Lambda表 ...

  9. JavaSE学习18(接口组成更新,方法引用)

    接口组成更新 1.1 接口组成更新概述 接口的组成常量: public static final 可省略抽象方法: public abstract 可省略 java8之后 加入了默认方法:静态方法: ...

最新文章

  1. linux gcc常用编译选项总结
  2. LeetCode 1318. 或运算的最小翻转次数(位运算)
  3. python 函数式编程 库_使用Python的toolz库开始函数式编程的方法
  4. python UI/API 环境配置
  5. TFS配置过程中的错误
  6. 20172304 《程序设计与数据结构》 第一周学习总结
  7. 私塾在线java设计模式综合项目实战
  8. 电脑网页截屏怎么截长图?借助Safari对整个网页进行长截图
  9. html caption 靠左,HTML caption align 属性 | Paoo教程
  10. 央央家政解读:育儿嫂服务内容和标准
  11. 如何使用networkx导入txt文件数据并绘制
  12. 美日开年第二场大演习,这是要给虎年定个调吗
  13. c++基础学习:输入cin、输出cout、换行endl
  14. 电源设计中的电容应用实例
  15. ALBRECHT铣刀夹头BT50 20-32
  16. mac 部署 ansible 记录
  17. History lives on in this distinguished Polish city 2017/1/4
  18. 学了那么久Python还什么都做不了,我觉得你该试试这个方法了
  19. html网页打不开二级网页,遇到二级网页打不开怎么办 讲解二级页面打不开的处理方法...
  20. 《潜能成功学》----如何建立自信

热门文章

  1. C语言程序设计实验最短路径,7最短路径C语言程序设计.pdf
  2. 因特网使用期限_Internet死亡时使用PC的其他方式
  3. 如何破解您忘记的Windows密码
  4. 网页背景平铺_在大约十秒钟内为网页创建无缝平铺背景
  5. ExecutorService——shutdown方法和awaitTermination方法
  6. 阿里云如何实现海量短视频的极速分发?答案在这里!
  7. 自定义View的三个构造函数
  8. Jenkins入门系列之——03PDF文档下载
  9. 腾讯急招多名.NET Core,5年30k!
  10. C# WPF中添加调试信息查看窗体