问题标签 [abstract-class]
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 - 需要抽象类和接口?
接口是一个 100% 的抽象类,因此我们可以使用接口进行高效编程。是否存在抽象类比接口更好的情况?
php - 我可以为子类指定非严格的方法要求吗?
我有一个基类,我想在其中指定子类必须具有的方法,但不自己实现它们。但是,子类中的方法可能与基类中的定义具有不同数量的参数。
用抽象方法尝试过这个,php 不允许这样做。是否可以?
java - 具有所有具体方法的抽象类
当类抽象中的所有方法都是具体的时,是否有一些实际的编程情况可供某人声明类抽象?
java - 为什么Java中的静态方法不能是抽象的?
问题是在 Java 中为什么我不能定义一个抽象的静态方法?例如
python - Python中抽象类和接口的区别
Python中的抽象类和接口有什么区别?
c# - 在 C# 中实现只读(不可变)对象接口
我的目标是确保在大多数情况下,对象是通过作为完整接口子集的“只读接口”使用的。
- 例如,如果我使用 C++,我将只返回一个
const
对象。 - 在 C# 中,如果我可以通过接口实现这一点,我只会实现一个只读接口并在任何地方使用它。但是,我需要运算符重载,这对于接口是不允许的。这就是为什么我必须使用抽象基类。
- 但是如果我定义了一个抽象基类,我就不能改变派生类型的可访问性。
那么,如何在 C# 中实现我的目标?
c++ - 在 C++ 中注册派生类
编辑:小修复(虚拟打印;返回 mpInstance)在答案中的注释之后。
我正在尝试创建一个系统,在该系统中我可以从任何基类派生一个子类,并且它的实现应该替换基类的实现。
所有创建和使用基类对象的对象都不应改变它们创建或调用对象的方式,即即使它们实际创建了子类,也应继续调用 BaseClass.Create()。基类知道它们可以被覆盖,但它们不知道覆盖它们的具体类。
我希望所有子类的注册都在一个地方完成。
这是我的实现:
使用此实现,当我从其他类执行此操作时:
我希望在输出中得到“孩子”。
你觉得这个设计怎么样?我是不是把事情复杂化了太多,可以做得更容易?我可以创建一个从抽象类继承的模板吗?
我不得不使用 dynamic_pointer (否则没有编译) - 是否暗示有问题?
谢谢你。
c++ - 具有静态函数的类在 C++ 中成为抽象基类
有一个用例
我想让 foo 成为一个抽象基类,但显然 make 不能在这个抽象基类中,因为虚函数不能是静态的。
像这样
从设计的角度来看,在抽象类中使方法非静态或使派生类具有静态方法是一种好方法。
java - Java中的抽象类和方法,继承
我有类 B,它继承自类 A。超类 A 是抽象的,包含一个抽象方法。我不想在 B 类中实现抽象方法,因此我也需要将 B 类声明为抽象。声明 B 类抽象,有两件事对我有用(程序编译和运行正确):
1.)我没有在B类中声明任何抽象方法,即使该类是抽象的。我认为这是可行的,因为该类继承了类 A 的抽象方法,这足以将该类声明为抽象:我们不需要在该类中直接声明任何其他抽象方法。
2.) 我确实在 B 类中声明了与在 A 类中声明的相同的抽象方法。这是某种覆盖(?),与 java 中的覆盖不同(使用相同的标头,但提供不同的实现),这里我只是再次使用该方法的相同标头。
这两件事都有效,我不确定它们是否都可以,以及其中一些是否比另一个更受欢迎(更正确)。这两种方式是否相同(它们对 Java 是否意味着相同)?
在这里,我给出了一些示例类,以便我的意思对您来说更清楚:
情况1。):
案例2):
问候
c# - 这种设计是个好主意吗 - 接口和抽象类
我希望能够执行以下操作:
这样的事情会不会太多:
http://img81.imageshack.us/img81/427/diagramcm3.jpg
还是会更好:
http://img301.imageshack.us/img301/4136/presentation1nh9.jpg
抱歉,如果这很难理解我要理解的内容,基本上我有两个对象将共享 comman 属性,但行集合将是通用的。我想以最干净的方式做到这一点。
对不起,我用 powerpoint 制作的蹩脚图表 :)