什么是Java中的“抽象类”?
我被问了一个问题,我想在这里回答我的答案。 问:在哪种情况下,扩展抽象类而不是实现接口更合适? 答:如果我们使用模板方法devise模式。 我对么 ? 如果我无法清楚地说出问题,我感到抱歉。 我知道抽象类和接口的基本区别。 1)当需求是这样的时候,使用抽象类:我们需要在每个子类中为特定的操作(实现该方法)实现相同的function,并且为其他一些操作(只有方法签名) 2)使用接口,如果你需要把签名放在同一个(和实现不同),以便你可以遵守接口的实现 3)我们可以扩展一个抽象类的最大值,但可以实现多个接口 重申一个问题:除了上面提到的那些,还有没有其他的场景需要使用抽象类(一种是模板方法devise模式只是基于这个概念)? 接口与抽象类 在这两者之间进行select,取决于你想要做什么,但对我们来说幸运的是,Erich Gamma可以帮助我们一点。 和往常一样有一个权衡,一个接口给你基础类的自由 ,一个抽象类给你随后添加新方法的自由 。 – Erich Gamma 你不能去改变一个接口,而不必在你的代码中改变很多其他的东西 ,所以唯一的方法就是创build一个全新的接口,这可能不是一件好事。 Abstract classes应主要用于密切相关的对象。 Interfaces更好地为不相关的类提供通用的function。
为什么创build抽象或接口类,或者什么时候应该使用抽象或接口类?
抽象类可以有一个构造函数吗? 如果是这样的话,怎么可以用来做什么用途呢?
这可能是一个通用的OOP问题。 我想根据用法在接口和抽象类之间进行通用的比较。 什么时候想要使用一个接口,什么时候想要使用一个抽象类 ?
我如何设置一个代表接口的类? 这只是一个抽象的基类吗?
界面和抽象类的区别究竟是什么?
最近有两次电话采访,我被问及界面和抽象类之间的区别。 我已经解释了他们所能想到的每一个方面,但似乎他们正在等待我提到一些具体的东西,我不知道它是什么。 从我的经验来看,我认为以下是事实。 如果我错过了一个重点,请让我知道。 接口: 在接口中声明的每个方法都必须在子类中实现。 接口中只有事件,委托,属性(C#)和方法可以存在。 一个类可以实现多个接口。 抽象类: 只有抽象方法必须由子类实现。 一个抽象类可以有实现的普通方法。 抽象类也可以在事件,委托,属性和方法旁边有类variables。 一个类只能由于C#中多重inheritance的不存在才能实现一个抽象类。 毕竟,面试官想出了这样一个问题:“如果抽象类只有抽象方法,那么接口又有什么不同呢? 我不知道答案,但我认为这是上面提到的inheritance权吗? 另一位面试官问我,如果你在界面中有一个公共variables,那么和抽象类有什么不同呢? 我坚持你不能在一个接口中有一个公共variables。 我不知道他想听什么,但他也不满意。 另见 : 何时使用接口而不是抽象类,反之亦然 接口与抽象类 你如何决定使用抽象类和接口? 界面和抽象类有什么区别?
我原来是一个Java程序员,现在与Objective-C一起工作。 我想创build一个抽象类,但在Objective-C中看起来是不可能的。 这可能吗? 如果不是,我可以在Objective-C中得到多近的抽象类?