问题标签 [interface]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 我们应该@Override 接口的方法实现吗?
实现接口方法的方法应该用 注释@Override
吗?
表示方法声明旨在覆盖超类中的方法声明。如果一个方法被这个注解类型注解但没有覆盖超类方法,编译器需要生成一个错误信息。
我不认为接口在技术上是超类。或者是吗?
class - 接口契约,类对象?
接口的契约是对象与类的契约吗?
从代码到执行代码,有什么需要区分这样的相同事物?我有点理解将类命名为类并将实例化的执行类命名为对象的想法,但总的来说,这是这些半冗余术语的唯一原因吗?
c# - 将对象转换为通用接口
我有以下界面:
以及一堆(应该)实现它的类,例如:
我意识到这三个是不一样的:
但尽管如此,我需要一种方法来处理所有不同的类,比如 AdminRateShift(和 FXRateShift、DetRateShift),它们都应该实现 IRelativeTo。假设我有一个将 AdminRateShift 作为对象返回的函数:
通过针对接口进行编程,我可以做我需要做的事情,但我实际上不能将 Object 强制转换为 IRelativeTo 所以我可以使用它。
这是一个微不足道的例子,但我希望它能阐明我想要做什么。
naming-conventions - 接口是否有 ISomething / ISomethingable 的替代方案?
使用 I 作为接口名称前缀的 .NET 标准似乎越来越普遍,并且不再仅限于 .NET。我遇到了很多使用这种约定的 Java 代码(所以如果 Java 在 C# 之前使用它,我不会感到惊讶)。Flex 也使用它,等等。不过,在名称的开头放置一个 I 有点匈牙利符号的味道,所以我对使用它感到不舒服。
所以问题是,是否有另一种方式来表示Something 是一个接口,而不是一个类,并且无论如何都需要这样表示它。还是它成为一个标准,所以我应该接受它并停止试图通过建议以不同的方式来挑起“宗教战争”?
javascript - 在 JavaScript 中是否有“正确”的继承方式?如果是这样,它是什么?
我一直在尝试学习如何向现有代码添加测试——目前正在阅读有效地使用遗留代码。我一直在尝试在 JavaScript 中应用一些原则,现在我正在尝试提取一个接口。
在寻找用 JavaScript 创建接口的过程中,我找不到很多东西——而我发现的关于继承的东西似乎有几种不同的方式。(有些人创建自己的基类以提供有用的方法,使继承更容易,有些人使用函数,有些人使用原型)。
什么是正确的方法?有一个在 JavaScript 中提取接口的简单示例吗?
python - Python继承 - 如何禁用函数
在 C++ 中,您可以通过在子类中将其声明为私有来禁用父类中的函数。如何在 Python 中做到这一点?IE 如何从孩子的公共界面隐藏父母的功能?
.net - .NET:使用配置文件选择具体类
(这个问题专门在 C# 中,但一般适用于 .NET)
我有一个大型应用程序,它的设计相当不错,并且通过接口分为主要部分(这样做是为了帮助并行开发)。
我们现在有一组主要的具体类来实现所需的接口,但我们也有额外的具体类集用于替代情况和测试。
目前,我们将所有这些类放在代码的顶层:
如果我想换出组件,那么我只需要更改该行并重新编译:
这很好用,但显然需要重新编译——我宁愿使用配置文件中的值选择具体类。
使用配置文件更改具体类的标准模式是什么?有没有我可以使用的标准库来为我解决这个问题?
谢谢!
excel - 如何以编程方式连接 Excel 电子表格?
我有一个使用Excel 作为数据库并希望通过真实数据库对 Excel 数据进行一些工作的组织请求一些合同工作。(是的,我知道,没关系……)
客户有一个 Excel 表,他们在内部使用它来跟踪一些政府计划。此 Excel 表中的数据过去通过 CSV 作为中间格式手动导入 SQL 数据库,并通过一个小型 Web 应用程序提供。电子表格或数据库中的更改都是手动完成的(由不同的人),并且必须手动保持同步。
新功能的规范包括:
- 将 Excel 文件上传到 Web 应用程序
- 通过网络应用程序进行微小的更改(当然,这一点很简单)
- 偶尔将数据导出回 Excel
电子表格(实际上,它是工作簿中的几个)实施了与其他机构交互所必需的一些准则,因此在导入之前和之后必须在结构上保持相同。它包含大量格式设置、隐藏列和排序按钮,以及不同工作表中单元格之间的大量数据链接。
我不想从头开始复制电子表格来提供导出,也不想在导入之前手动将正确的列提取到 CSV 中。我宁愿寻找一种方法来加载 Excel,“查询”某些字段,将它们写入数据库,然后从数据库中加载数据并仅操作正确单元格的内容。
有没有办法以编程方式与现有电子表格进行交互,并且只读取或更改您需要的位?
java - 接口的骨架实现中的抽象方法
我正在重新阅读 Effective Java (2nd edition) item 18, prefer interfaces to abstract classes。在该项目中,Josh Bloch 提供了Map.Entry<K,V>
接口的骨架实现示例:
这个例子有两个问题:
- 为什么这里将 getKey 和 getValue 显式声明为抽象方法?它们是Map.Entry接口的一部分,所以我看不出抽象类中冗余声明的原因。
为什么要使用将这些原始方法(正如 Bloch 先生所说的那样)保留为抽象的习语?为什么不这样做:
// 骨架实现 public abstract class AbstractMapEntry implements Map.Entry { private K key; 私人V值;
}
这样做的好处是每个子类不必定义自己的字段集,并且仍然可以通过其访问器访问键和值。如果子类确实需要为访问器定义自己的行为,它可以直接实现 Map.Entry 接口。另一个缺点是在骨架实现提供的 equals 方法中,抽象访问器被调用:
Bloch 警告不要从为继承而设计的类中调用可覆盖的方法(第 17 项),因为它会使超类容易受到子类所做更改的影响。也许这是一个见仁见智的问题,但我希望确定这个故事是否还有更多内容,因为布洛赫在书中并没有真正详细说明这一点。
vb.net - 这个属性应该是我的对象接口的一部分吗?
我有一个名为“IsSecureConnection”的属性,它是我的对象接口的一部分。这对于接口的大多数实现都是有意义的,但是,在某些实现中,我想将属性设为 ReadOnly。
即使所有实现都需要它(尽管有时略有不同),我是否应该从对象的接口中省略此属性?
谢谢!