接口与抽象和继承

2024-01-03

我已经了解了接口、抽象类和继承的用法。我看到每种都有其用途,但我仍然有点困惑。

我知道,一般一个类只能扩展另一个类,虽然有些类可能支持多重继承,但它可以实现多个接口(这可能是使用接口的主要原因)。但是,如果我是正确的,这个课程也可以由另一个课程扩展。我还发现抽象类可能比接口更快,并且可以具有非静态最终变量。

所以,我仍然不确定什么时候使用哪个更好。也许通过举一些例子可以更好地理解这一点。我并不反对使用任何东西,但我认为有些东西我没有看到。进一步的解释也可能有帮助。提前致谢。


如果您想要使用与基类相同的代码并使用额外的功能扩展它,那么从基类继承非常有用。

虚拟和抽象与此相关。您可以使用基本实现创建虚拟方法。后代类可以(可选)更改或添加到此实现。抽象类是本身不完整的基类。声明了一个抽象方法,但尚未实现。后代阶级must提供一个实现。如果基类实现了一个流,但该流的一部分需要由另一个类实现,那么这很有用。基类需要能够调用该部分,这就是声明抽象方法的地方。

接口则是另一回事。接口是关于类中存在哪些方法的契约,但它们可以由两个完全不相关的类来实现。这很方便,因为您可以为小块功能创建小接口。例如,可以保存的东西可以实现 ISavable,它只是强制“Save”方法的存在。两个完全不同的类可以实现这一点,例如允许“全部保存”功能仅保存可以保存的所有内容。

多重继承是一种特定的语言功能,在许多语言中都不可用,尽管在许多语言中您可以通过使用接口和delegate设计模式。

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

接口与抽象和继承 的相关文章

  • C# 带有泛型的异常继承语法

    我在 NHibernate 类定义中偶然发现了这一点 public class SQLiteConfiguration PersistenceConfiguration
  • C# 接口实现关系只是“Can-Do”关系?

    今天有人告诉我 C 中的接口实现只是 Can Do 关系 而不是 Is A 关系 这与我长期以来所相信的LSP 里氏替换原理 相冲突 我一直认为所有的继承都应该意味着 Is A 关系 所以 如果接口实现只是一种 Can Do 关系 如果有一
  • 重写继承的构造函数字段时的差异?

    考虑这个简单的 Scala 类 class A val d Int Scala 之间是否存在差异 无论是行为还是生成的字节码 class B d Int extends A d and class B override val d Int
  • 不在对象上下文中时使用 $this php

    我刚刚开始学习 php 中的 OOPS 我写了一个简单的程序来实现继承 当不在对象上下文中时 我收到 this 的致命错误 谁能解释一下这个错误 它是什么意思 这是我的代码
  • 如何通过反射访问抽象父类中的实例字段?

    所以 举例来说 StringBuilder继承自抽象类AbstractStringBuilder 据我了解 StringBuilder本身没有字段 除了serialVersionUID 相反 它的状态由以下字段表示AbstractStrin
  • 使用 Serialized 属性和实现 ISerialized 之间有什么区别?

    使用有什么区别Serializable属性并实现ISerializable界面 当您使用SerializableAttribute http msdn microsoft com en us library system serializa
  • 使用Java查找无线网络的SSID

    我们正在做一个用 Java 编码的项目 为 JRE 1 6 编译 需要一些帮助 一个有点但明显复杂的功能 我们希望在连接特定无线网络时执行特定操作 例如当连接的 SSID myNetworkAtHome 或类似名称时 在浏览了这个网站 谷歌
  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w
  • C# 中的继承树和受保护的构造函数

    给定以下继承树 以有效的方式实现它的最佳方法是什么 abstract class Foo
  • 如何在UITextField上自动打开键盘?

    我有一个非常简单的表格 当触摸单元格时 它会打开一个带有一个 UITextfield 的新视图 我想要的只是键盘会自动打开 而用户无需触摸 UITextfield 这一切都是在 Interface Builder 中完成的 所以我不确定如何
  • Android proguard Javascript 接口问题

    我的项目在使用 proguard 进行混淆后因 javascriptinterface 失败 这是包含混淆器配置的一些建议的链接 但它在我的情况下不起作用 http groups google com group android devel
  • 将参数传递给基类构造函数

    如果基类和派生类都有带参数的构造函数 那么我们在哪里将参数传递给基类构造函数 像这样 public class DerivedClass BaseClass public DerivedClass int derivedParam Stri
  • 我们如何在odoo中继承BaseModel类

    需要继承BaseModel类并添加一个新属性 例如 auto True register False name None columns constraints custom False defaults rec name None par
  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • 什么是多重重继承?

    我将以下称为 多重重新继承 直接继承一个类一次 并通过继承其一个或多个后代来间接继承一次或多次 通过继承一个类的两个或多个后代来间接继承一个类两次或多次 我想知道它是否存在以及如何明确访问嵌入的子对象 1 Professional C 2n
  • 枚举的子类化

    有没有一种简单的方法来子类化Javaenum 我问这个问题是因为我有大约 10 个实现相同接口的对象 但它们对某些方法也有相同的实现 因此我想通过将所有相同的实现放置在扩展的中间对象中来重用代码Enum它也是我需要的所有其他类的超类 或许事
  • 如何使用继承来建模 RESTful API?

    我有一个需要通过 RESTful API 公开的对象层次结构 但我不确定我的 URL 应该如何构建以及它们应该返回什么 我找不到任何最佳实践 假设我有从动物继承的狗和猫 我需要对狗和猫进行CRUD操作 我还希望能够对一般动物进行手术 我的第
  • 子类 B 继承自模板类 A [重复]

    这个问题在这里已经有答案了 我最近偶然发现了如下代码 但我无法理解它 template
  • Java - java.lang.NoSuchMethodException

    我尝试使用这段代码 Updatem set 在 for 循环内部使用 它会执行几种使用不同类型参数的方法 如果我添加例如 int classgetMethod 在一次迭代后我会得到错误 因为下一个方法需要 String class 是否可以
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入

随机推荐