Questions tagged «abstract-class»

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


30
接口vs抽象类(通用OO)
最近,我接受了两次电话采访,有人问我接口和抽象类之间的区别。我已经解释了我可以想到的各个方面,但是似乎他们正在等我提及一些特定的内容,我不知道它是什么。 根据我的经验,我认为以下是对的。如果我缺少要点,请告诉我。 接口: 接口中声明的每个方法都必须在子类中实现。接口中只能存在事件,委托,属性(C#)和方法。一个类可以实现多个接口。 抽象类: 子类仅必须实现Abstract方法。Abstract类可以具有实现的常规方法。抽象类在事件,委托,属性和方法旁边也可以具有类变量。由于C#中不存在多重继承,一个类只能实现一个抽象类。 毕竟,面试官提出了一个问题:“如果您有一个仅包含抽象方法的Abstract类,该怎么办?与接口有什么不同?” 我不知道答案,但我认为这是上面提到的继承对吗? 另一个面试官问我,如果接口内有一个Public变量,那和Abstract Class有什么不同?我坚持认为,接口内不能有公共变量。我不知道他想听什么,但他也不满意。 另请参阅: 何时使用接口代替抽象类,反之亦然 接口与抽象类 您如何决定使用抽象类和接口? 接口和抽象类之间有什么区别?





21
在Objective-C中创建抽象类
我最初是一名Java程序员,现在使用Objective-C。我想创建一个抽象类,但是在Objective-C中似乎不可能。这可能吗? 如果没有,我在Objective-C中能接近一个抽象类吗?

29
我应该如何解释接口和抽象类之间的区别?
在我的一次采访中,我被要求解释Interface和Abstract类之间的区别。 这是我的回应: Java接口的方法是隐式抽象的,不能具有实现。Java抽象类可以具有实现默认行为的实例方法。 在Java接口中声明的变量默认为final。抽象类可能包含非最终变量。 默认情况下,Java接口的成员是公共的。Java抽象类可以具有类成员的常用风格,例如private,protected等。 Java接口应使用关键字“ implements”来实现;Java抽象类应使用关键字“ extends”进行扩展。 一个接口只能扩展另一个Java接口,一个抽象类可以扩展另一个Java类并实现多个Java接口。 Java类可以实现多个接口,但只能扩展一个抽象类。 但是,面试官并不满意,并告诉我该描述表示“ 书本知识 ”。 他要求我提供更实际的答复,并通过实际示例说明何时在接口上选择抽象类。 我哪里做错了?

14
如何对抽象类进行单元测试:使用存根扩展?
我想知道如何对抽象类以及扩展抽象类的单元进行单元测试。 我是否应该通过扩展抽象类,对抽象方法进行存根测试,然后测试所有具体方法来测试抽象类?然后只测试覆盖的方法,并在单元测试中测试扩展我的抽象类的对象的抽象方法? 我是否应该有一个抽象测试用例,可用于测试抽象类的方法,并在我的测试用例中为扩展抽象类的对象扩展该类? 请注意,我的抽象类具有一些具体方法。



12
是否可以在Python中创建抽象类?
如何在Python中使类或方法抽象? 我尝试__new__()像这样重新定义: class F: def __new__(cls): raise Exception("Unable to create an instance of abstract class %s" %cls) 但是现在,如果我创建一个像这样G继承的F类: class G(F): pass 那么我也无法实例化G,因为它调用了其超类的__new__方法。 有没有更好的方法来定义抽象类?



5
为什么在Python中使用抽象基类?
因为我习惯了Python中鸭子输入的旧方法,所以我无法理解对ABC(抽象基类)的需求。的帮助下是如何使用它们好。 我试图阅读PEP中的基本原理,但它使我感到头疼。如果我正在寻找一个可变序列容器,我会检查__setitem__,或更可能尝试使用它(EAFP)。我还没有真正使用过数字模块,它确实使用了ABC,但这是我必须了解的最接近的数字。 有人可以向我解释理由吗?

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.