Questions tagged «abstract-class»

抽象类是无法实例化的类。它们存在的目的是为几种具体的类提供通用的功能和接口规范。

13
Python中的抽象属性[重复]
这个问题已经在这里有了答案: 如何在python抽象类中创建抽象属性 (3个答案) 6个月前关闭。 在Python中使用抽象属性实现以下Scala代码的最短/最优雅的方法是什么? abstract class Controller { val path: String } ControllerScala编译器强制使用的子类来定义“路径”。子类如下所示: class MyController extends Controller { override val path = "/home" }

7
为什么我们不能声明std :: vector <AbstractClass>?
我花了很多时间在C#中进行开发,但我注意到,如果您声明一个抽象类以便将其用作接口,则无法实例化此抽象类的向量来存储子类的实例。 #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout &lt;&lt; "&lt;INSERT JOKE HERE&gt;"; } }; class FunnyContainer { private: std::vector &lt;IFunnyInterface&gt; funnyItems; }; 声明抽象类向量的行在MS VS2005中导致此错误: error C2259: 'IFunnyInterface' : …

14
Java中的抽象类与接口
我被问到一个问题,我想在这里让我的答案复习。 问:在哪种情况下,扩展抽象类而不是实现接口更合适? 答:如果我们使用模板方法设计模式。 我对么 ? 很抱歉,如果我不能清楚地说明问题。 我知道抽象类和接口之间的基本区别。 1)当需要满足以下条件时使用抽象类:对于特定操作(实现方法),我们需要在每个子类中实现相同的功能,而对于某些其他操作(仅方法签名),则需要实现不同的功能 2)如果需要使签名相同(并且实现不同),请使用接口,以便可以遵循接口实现 3)我们可以扩展一个抽象类的最大值,但是可以实现多个接口 重申一个问题:除了上述提到的情况之外,还有其他情况需要专门使用抽象类吗(可以看到模板方法设计模式仅在概念上基于此)? 接口与抽象类 在这两者之间进行选择确实取决于您要做什么,但幸运的是,对于我们来说,Erich Gamma可以为我们提供一些帮助。 一如既往地需要权衡取舍,接口为您提供了关于基类的自由,抽象类为您提供了以后添加新方法的自由。–埃里希·伽玛(Erich Gamma) 您不能去更改接口而不必更改代码中的许多其他内容,因此避免这种情况的唯一方法是创建一个全新的接口,这不一定总是一件好事。 Abstract classes应该主要用于紧密相关的对象。Interfaces擅长为不相关的类提供通用功能。

10
如何使用JUnit在Java中测试抽象类?
我是第一次使用JUnit进行Java测试。我必须使用Java,并且想使用单元测试。 我的问题是:我有一个带有一些抽象方法的抽象类。但是有些方法不是抽象的。如何使用JUnit测试此类?示例代码(非常简单): abstract class Car { public Car(int speed, int fuel) { this.speed = speed; this.fuel = fuel; } private int speed; private int fuel; abstract void drive(); public int getSpeed() { return this.speed; } public int getFuel() { return this.fuel; } } 我要测试getSpeed()并getFuel()运行。 与此问题类似的问题在这里,但它没有使用JUnit。 在“ JUnit常见问题解答”部分中,我找到了此链接,但是我不理解作者想在此示例中说些什么。这行代码是什么意思? public abstract Source …


4
在TypeScript中扩展与实现纯抽象类
假设我有一个纯抽象类(即没有任何实现的抽象类): abstract class A { abstract m(): void; } 像在C#和Java中一样,我可以扩展抽象类: class B extends A { m(): void { } } 但是与C#和Java不同,我还可以实现抽象类: class C implements A { m(): void { } } 类B和C行为如何不同?为什么我要选择一个? (当前,TypeScript手册和语言规范不涵盖抽象类。)

6
java.util.AbstractList.add上的UnsupportedOperationException
我遇到了使代码块无法正常运行的问题。我不完全确定这段代码的作用(我正在尝试获取一个过时的插件,无法与我们的服务器正常工作),我只知道它每20分钟运行一次并抛出错误。这是发生问题的代码部分: public class DynamicThread extends Thread { private LocalShops plugin = null; public DynamicThread(ThreadGroup tgroup, String tname, LocalShops plugin) { super(tgroup, tname); this.plugin = plugin; } public void run() { Map&lt;ItemInfo, List&lt;Integer&gt;&gt; itemStockMap = Collections.synchronizedMap(new HashMap&lt;ItemInfo, List&lt;Integer&gt;&gt;()); //Dump all the shop stock data into the map. for ( Shop shop …

3
类映射错误:“ T”必须是具有公共无参数构造函数的非抽象类型
在映射类我遇到错误“ T”的同时,它必须是具有公共无参数构造函数的非抽象类型,才能在通用类型或方法中将其用作参数“ T”。 以下是我的SqlReaderBase类 public abstract class SqlReaderBase&lt;T&gt; : ConnectionProvider { #region Abstract Methods protected abstract string commandText { get; } protected abstract CommandType commandType { get; } protected abstract Collection&lt;IDataParameter&gt; GetParameters(IDbCommand command); **protected abstract MapperBase&lt;T&gt; GetMapper();** #endregion #region Non Abstract Methods /// &lt;summary&gt; /// Method to Execute Select Queries …


7
Java抽象类使用泛型实现接口
我试图定义一个实现Comparable的抽象类。当我用以下定义定义类时: public abstract class MyClass implements Comparable &lt;MyClass&gt; 子类必须实现compareTo(MyClass object)。相反,我希望每个子类都实现compareTo(SubClass object),接受其自己类型的对象。当我尝试使用类似以下内容定义抽象类时: public abstract class MyClass implements Comparable &lt;? extends MyClass&gt; 它抱怨“一个超类型可能没有指定任何通配符。” 有解决方案吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.