|
|
1
63
抽象类
子类可能看起来像
如果一个子类不覆盖未实现的方法,它也是一个抽象类。
回到Shape示例
Deadly Diamond of Death Problem 在允许多重继承的语言中发现(如果处理得当,这并不是那么致命)。 混入
behavioral reuse
,
more flexible
more powerful
这并不是说混音不好。多重继承并不坏。C++解决多重继承的方式是每个人都非常关心的。 回到疲惫的旧Shape示例
|
|
|
2
20
一般来说: 一 接口 是一个指定操作的合约,但没有任何实现。一些语言(Java、C#)已经内置了对接口的支持,而在其他语言中,“接口”描述了一种约定,就像C++中的纯虚拟类一样。 一 抽象类 是一个类,它指定了至少一个没有实现的操作。抽象类还可以提供其实现的某些部分。同样,一些语言已经支持将类标记为抽象,而另一些语言则隐含了这一点。例如,在C++中,定义纯虚方法的类是抽象的。 A.
也许通过累积请求来缓冲请求是有用的,直到我们有一些预定的数量,然后刷新缓冲区。我们可以通过以下方式实现缓冲功能 混入 而不指定冲洗行为:
这样,我们很容易编写一个请求处理程序,将请求写入磁盘、调用web服务等,而无需每次重写缓冲功能。这些请求处理程序可以简单地扩展
|
|
|
3
6
抽象类:
我用一个小例子来结束分歧。
狗
狗
猫
人
,谁是
人和动物(猫/狗)没有关系。但是Hunt接口可以为无关的实体提供相同的功能。 混合物:
相关SE问题: What is the difference between an interface and abstract class? |
|
|
4
3
引用Java和给出的抽象类示例来提供mixin是有误导性的。 首先,Java默认不支持“混入”。在Java术语中,抽象类和Mixin变得令人困惑。 混入是一个类除了其“主类型”之外还可以实现的类型,以表明它提供了一些可选行为。用Java的术语来说,一个例子是实现序列化的业务值对象。
寻找Scala和Ruby等语言来适当实现“混入”的概念 |
|
|
5
3
Joshua Bloch在他有效的Java书中很好地定义了“Mixin”的含义。摘自同一本书: " mixin是一种类型 一些可选行为。例如,Comparable是一个混入接口 可比对象。这样的接口被称为混入,因为它允许 " |
|
6
1
基本上,抽象类是一个具有具体实现的接口。接口只是一个没有实现细节的契约。
|
|
|
7
1
抽象类不能被实例化,因此它们的构造函数不应该是公共的。]
} 接口是类要实现的契约。它只声明实现类成员的签名,它本身没有实现。我们通常使用接口来实现多态性,并解耦依赖类。
|
|
|
Rishab Negi · 这个关键字在抽象类中是如何工作的 1 年前 |
|
|
Reelie · C#11-通过抽象类在接口中静态抽象成员? 2 年前 |
|
Denis Steinman · 如何从内部命名空间为类创建别名?复制 2 年前 |
|
|
vimal raj · javascript中类的执行顺序 2 年前 |
|
|
Max · 如何使用抽象/接口类的向量作为函数参数? 3 年前 |
|
|
timurichk · 我的类不重写抽象方法compareTo 8 年前 |