在一次采访中,有人要求我说明什么时候选择接口类,什么时候选择抽象类,在什么条件下你将从这两个类中选择一个。我对界面做了分析,那就是...
接口是进行类型声明或定义多方合同的最佳选择。如果多个程序员在一个项目的不同模块中工作,他们仍然通过定义接口来使用彼此的API,而不是等待实际的实现就绪。
这在编码和开发方面给我们带来了很大的灵活性和速度。接口的使用还确保了最佳实践,如“为接口编程而不是实现”,并导致更灵活和可维护的代码。
但是我没有很强的理由来证明抽象类的合理性,请建议…!
抽象类用于将多个具体类组合在一个实体下。
例如,以抽象类animal
为例。动物不是具体的东西。这是一个,嗯,动物的家庭。但是它们都有某些方面的共享,例如,每个都有speak()
选项(当然,除了fish和sort之外)。但每种方法的实现方式都不一样。这样您就可以重写不同的方法,例如sleep()或breath()
是通用的(同样,fish是differnet:))。
另一方面,接口是一个“动作”的更直接的定义。这就是为什么大多数(如果不是全部的话)Java中的接口都以'able'结尾(Comprable,serializable...)通过实现接口,您告诉其他程序员或曾经使用过您的代码的人,这个类可以做这些和这些。例如,狗是不能动的。
基本上,总结一下,我认为,最好的定义是这样的。当您有一个a是b
类时,请使用抽象类;当a可以做b
时,请使用接口。
希望能帮上忙。
问题内容: 在Python,Java和其他几种硒绑定中,在HTML结构(class)上有一个非常方便的抽象。 例如,假设有以下标记: 这是我们如何在Python中操作它的方法: 换句话说,这是一个 非常透明且易于使用的抽象 。 可以类似的方式 在量角器* 中操纵标签吗? * 这与下拉式量角器e2e测试中的“如何选择选项”或量角器测试中的“选择”框中的如何单击选项不是重复的?。 问题答案: 在量角器
在Python、Java和其他几个selenium绑定中,对
本文向大家介绍PHP中抽象类、接口的区别与选择分析,包括了PHP中抽象类、接口的区别与选择分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了PHP中抽象类、接口的区别与选择。分享给大家供大家参考,具体如下: 区别: 1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。 2、接口中不可以声明成员变量(包括类
我想读关于抽象的文章,但读到不同的文章,我感到很困惑。 下面是我无法理解的问题: 1)“抽象是通过使用抽象类和接口实现的吗?”我对此进行了搜索,得到了三种类型的答案: 与此处解释的不同。 它们是相同的,只是不同的观点,就像这里解释的。 最后一个是抽象类用来实现抽象。 哪一个是真的?请举一个简单的例子。 2)“抽象意味着隐藏不必要的细节。比如专注于一个对象做什么而不是它是如何完成的。” 这是正确的吗
问题内容: 考虑一个示例(在Java中编译) 为什么必须将接口“声明”为抽象的?还有其他适用于抽象接口的规则吗? 最后:如果过时了,为什么将它包含在Java中?有抽象接口的历史吗? 问题答案: 为什么必须将接口“声明”为抽象的? 不是。 接口及其方法是隐式的,添加该修饰符没有区别。 还有其他适用于抽象接口的规则吗? 不,适用相同的规则。该方法必须由任何(具体)实现类来实现。 如果抽象已经过时,为什
问题 你想定义一个接口或抽象类,并且通过执行类型检查来确保子类实现了某些特定的方法 解决方案 使用 abc 模块可以很轻松的定义抽象基类: from abc import ABCMeta, abstractmethod class IStream(metaclass=ABCMeta): @abstractmethod def read(self, maxbytes=-1):