有没有办法迫使孩子类重写超类的非抽象方法? 我需要能够创build父类的实例,但是如果一个类扩展了这个类,它必须给它自己的一些方法的定义。
在我的Python应用程序中,我想创build一个既是staticmethod又是abc.abstractmethod方法的方法。 我该怎么做呢? 我尝试应用两个装饰器,但它不工作。 如果我这样做: import abc class C(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @staticmethod def my_function(): pass 我得到一个exception*,如果我这样做: class C(object): __metaclass__ = abc.ABCMeta @staticmethod @abc.abstractmethod def my_function(): pass 抽象方法没有被强制执行。 我怎样才能做一个抽象的静态方法? *例外: File "c:\Python26\Lib\abc.py", line 29, in abstractmethod funcobj.__isabstractmethod__ = True AttributeError: 'staticmethod' object has no attribute '__isabstractmethod__'
我想知道如何unit testing抽象类和扩展抽象类的类。 我是否应该通过扩展来testing抽象类,抽出抽象方法,然后testing所有的具体方法? 那么只testing我重写的方法,并testing抽象类的unit testing抽象方法的对象,扩展我的抽象类? 我是否应该有一个可以用来testing抽象类的方法的抽象testing用例,并在扩展抽象类的对象的testing用例中扩展这个类? 请注意,我的抽象类有一些具体的方法。
有没有办法在Swift语言创build一个抽象类,或者这是一个像Objective-C的限制? 我想创build一个类似于Java定义为抽象类的抽象类。
由于Java 8允许在名为Default Method的接口中默认实现方法 ,所以在我将何时使用abstract class之间似乎存在混淆。 那么何时应该使用默认方法的接口,何时应该使用抽象类呢? 抽象类在这种情况下仍然有用吗?
问题是在Java为什么我不能定义一个抽象的静态方法? 例如 abstract class foo { abstract void bar( ); // <– this is ok abstract static void bar2(); //<– this isn't why? }