gpt4 book ai didi

c# - 接口(interface)继承 : is extending properties possible?

转载 作者:IT王子 更新时间:2023-10-29 04:24:38 25 4
gpt4 key购买 nike

我想这样做:

interface IBase
{
string Property1 { get; }
}

interface IInherited : IBase
{
string Property1 { get; set; }
}

因此 IInherited 将拥有 inherited 属性 Property1 并添加允许 set 的功能。

这可能吗?语法是什么?

编辑:请注意我把“继承”这个词加粗了。我特别询问有关继承属性(property)的问题,而不是将其隐藏在新属性(property)之后。

最佳答案

如果执行此操作的唯一方法是使用 new 关键字这一事实让您感到困扰,那么我认为您对接口(interface)的看法是错误的。

当然,您可以说IInherited“继承自”IBase;但这到底是什么意思?这些是接口(interface);他们建立代码契约(Contract)。通过使用 new string Property1 { get; 隐藏 IBase.Property1 属性放; },您没有隐藏任何功能。因此,许多开发人员认为隐藏是一件“坏”事的传统原因——它违反了多态性——在这种情况下是无关紧要的。

问问自己:当涉及到接口(interface)时,真正重要的是什么?它们提供了响应特定方法调用的保证,对吗?

因此,给定以下两个接口(interface):

interface IBase
{
string Property1 { get; }
}

interface IInherited : IBase
{
new string Property1 { set; }
}
  1. 如果对象实现了 IBase,您可以读取它的 Property1 属性。
  2. 如果一个对象实现了IInherited,你可以读取它的Property1属性(就像IBase实现一样),你也可以写

同样,这里确实没有任何问题。

关于c# - 接口(interface)继承 : is extending properties possible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com