在Java中,抽象类和接口之间是微妙而重要的区别: 默认实现 。 抽象类可以有他们,接口不能。 虽然Java 8引入了接口的默认实现,这意味着这不再是接口和抽象类之间的关键区别。 那么是什么? 尽我所知,唯一剩下的差别(除了可能是一些效率下面的东西),抽象类遵循传统的Java单一inheritance,而接口可以有多重inheritance(或多重实现,如果你愿意的话)。 这导致我另一个问题 – 新的Java 8接口如何避免钻石问题 ?
我正在试图定义一个实现Comparable的抽象类。 当我用下面的定义来定义类时: public abstract class MyClass implements Comparable <MyClass> 子类必须实现compareTo(MyClass object) 。 相反,我希望每个子类都实现compareTo(SubClass object) ,接受它自己types的对象。 当我尝试用类似下面的方法定义抽象类时: public abstract class MyClass implements Comparable <? extends MyClass> 它抱怨说“超types可能不指定任何通配符”。 有解决scheme吗?
什么是在PHP中的抽象类? 哪里可以使用?
我想知道什么时候应该使用接口。 让我们思考以下几点: public abstract class Vehicle { abstract float getSpeed(); } 和: public interface IVehicle { float getSpeed(); } 我可以很容易地实现他们两个,他们有相同的function…但我也可以添加一些variables,我的车辆类,这可能应该用在车辆(maxSpeed,carType …) 什么是使用接口的原因? 谢谢! 编辑:我发现了另一个线程中的一个不错的链接: http : //www.thecoldsun.com/en/content/01-2009/abstract-classes-and-interfaces
可能重复: 你如何在C ++中声明一个接口? 这是一个关于C ++的普遍问题。 如您所知,C ++中的interface和abstract class与Java和C#不同,没有明显的区别。 什么时候使用C ++中的interface而不是abstract class更可取? 你能举一些例子吗?
在C#中,什么时候应该使用接口,何时应该使用抽象类? 什么是决定性因素?
我想用迅捷的语言创build一个抽象函数。 可能吗? class BaseClass { func abstractFunction() { // How do I force this function to be overridden? } } class SubClass : BaseClass { override func abstractFunction() { // Override } }
我清楚地记得,有一次,微软提出的指导方针是在抽象类中增加“基本”后缀,以避免它是抽象的。 因此,我们有类似System.Web.Hosting.VirtualFileBase , System.Configuration.ConfigurationValidatorBase , System.Windows.Forms.ButtonBase ,当然还有System.Collections.CollectionBase 。 但是我注意到,最近,框架中的很多抽象类似乎没有遵循这个约定。 例如,下面的类都是抽象的,但不遵循这个约定: System.DirectoryServices.ActiveDirectory.DirectoryServer System.Configuration.ConfigurationElement System.Drawing.Brush System.Windows.Forms.CommonDialog 而这正是我可以在几秒钟内鼓起来的。 于是我开始查阅官方文件的内容,以确保我不是疯了。 我在MSDN 开发类库的devise指南中find了类,结构和接口的名称 。 奇怪的是,我没有提到在抽象类的名字末尾添加“Base”的指南。 该指南已不再适用于框架1.1版本。 那么,我输了吗? 这个指导方针是否存在? 它是否被一言不发放弃了? 在过去的两年里,我自己一直创造了很长的名字吗? 有人在这里扔骨头。 更新我并不疯狂。 指南存在。 Krzysztof Cwalina在2005年抱怨。
在Visual Studio中,如何显示从基类inheritance的所有类? 例如 ,在ASP.NET MVC中有几个“ ActionResult ”types – 它们都从基类ActionResultinheritance/实现。 它看起来像,除非你知道View和Json是有效的ActionResulttypes,否则你无法轻易find这些信息。 请certificate我错了。 在对象浏览器中有什么东西可以很容易find? 我甚至提出了Visual Studio以外的工具的build议,以发现有关各种类的信息。 例如:Resharper中有什么能帮助我吗?
我很惊讶,在ES6上阅读时我找不到有关抽象类的东西。 (通过“抽象类”我正在谈论它的Java的含义,其中抽象类声明子类必须实现的方法签名才能实例化)。 有没有人知道在ES6中实施抽象类的任何约定? 能够用静态分析来捕捉抽象类违规将会很好。 如果我在运行时提出一个错误来指示抽象类实例的尝试,那么错误是什么?