多重继承的接口是否冗余?

2023-12-26

这不是关于抽象类和接口之间差异的另一个问题,因此请在投票关闭它之前三思而后行。

我知道接口对于那些不支持多重继承的 OOP 语言(例如 C# 和 Java)至关重要。但那些呢with多重继承?在具有多重继承的语言中,接口的概念(作为特定的语言功能)是否多余?我猜想可以使用抽象类来建立类之间的 OOP“契约”。

或者,更明确地说,C# 和 Java 中的接口只是它们不支持多重继承这一事实的结果吗?


一点也不。接口定义契约而不指定实现。

因此,即使存在多重继承,它们也是需要的——继承与实现有关。

从技术上讲,您可以在多重继承中使用抽象类来模拟接口。但因此人们可能会倾向于在那里编写一些实现,这会造成很大的混乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多重继承的接口是否冗余? 的相关文章

  • VB.NET 与 C# 中的属性实现多级继承

    假设我有 2 个接口 如下定义 public interface ISkuItem public string SKU get set public interface ICartItem ISkuItem public int Quant
  • 在VBA中使用类模块作为命名空间是否有任何陷阱

    VBA 不支持命名空间 Java 人员的包 其他语言中的命名空间有助于避免歧义并补充成员名称自动完成等工具 在 VBA 中模拟命名空间的一种方法是在类模块中声明什么是事实上的静态方法 然后在标准模块中声明该类的默认实例 这甚至是一些 Mic
  • 为什么必须使用“out”而不是ref?

    我写了一些关于 ref out 声明的代码块 我认为 ref 最有用 好的 为什么我需要用完 我每次都可以使用always ref namespace out ref class Program static void Main strin
  • 如何从继承的方法中获取派生类的路径?

    如何从继承的方法中获取当前类的路径 我有以下内容 and
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 继承php中的属性

    我有一个超类 其中包含用于设置它们的属性和方法 class Super private property function construct set this gt property set 然后我有一个需要使用该属性的子类 class
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 抽象类、接口、mixins

    有人可以向我解释一下两者之间的区别吗抽象类 接口 and mixins 我之前在代码中使用过它们 但我不知道技术差异 抽象类 抽象类是不被设计为实例化的类 抽象类可以没有实现 部分实现或全部实现 抽象类旨在允许其子类共享公共 默认 实现 抽
  • C# 继承

    假设我有以下代码 interface ISomeInterface void DoSomething void A void B public abstract class ASomeAbstractImpl ISomeInterface
  • 类型擦除露出丑陋的头,如何规避?

    所以我有这个界面 public interface EventHandler
  • 在调用超类的构造函数之前,有什么方法可以在Java中初始化子类的成员变量吗?

    我需要这个 因为超类中的构造函数正在调用子类中重写的方法 该方法返回一个值 该值被传递给子类的构造函数 但是超类构造函数必须在子类构造函数之前调用 所以我没有机会保存传入的值 从超类构造函数调用重写的方法根本行不通 不要这样做 超类构造函数
  • 未强制执行 Typescript 抽象类静态方法

    我在 TypeScript 中有这个简单的代码 abstract class Config readonly NAME string readonly TITLE string static CoreInterface gt any cla
  • java中什么是静态接口?

    我正在阅读Map Entry界面 当我注意到它是一个static界面 我不太明白什么是静态接口 它与常规接口有什么不同 public static interface Map Entry
  • 我应该使用课程吗? (Python)

    我正在尝试编写一个包含一些数学函数的小型 Python 模块 例如 它可能包含如下函数 def quad x a b c return a x 2 b x c 您可能会注意到它包含几个参数 即a b c 除了变量x 现在 如果我将其放入文件
  • 什么时候多重继承可能是唯一合理的解决方案? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 需要明确的是 我并不是在问多重继承是否 为什么是好还是坏 我听到了这场辩论双方的很多论点 我想知道 C 中是否存在任何类型的设计问题或
  • 了解多重继承中的 vptr 吗?

    我试图理解 Effective C 一书中的陈述 下面是多重继承的继承图 现在书上说vptr需要每个类中单独的内存 它还做出以下声明 上图中的一个奇怪之处是 尽管涉及四个类 但只有三个 vptr 如果实现可以随意生成四个 vptr 但三个就
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P

随机推荐