Java 概念上的差异:完全抽象的v类。接口

Java 概念上的差异:完全抽象的v类。接口,java,class,interface,abstraction,Java,Class,Interface,Abstraction,我想知道我是否正确理解了完全抽象类和接口之间的理论区别。我理解技术上的差异 我的理解是,类用于具体对象,接口用于这些对象可以展示的特性。所以,如果我在制作一个汽车类,我想让汽车有一个导航功能,我会制作一个导航界面,而不是一个抽象类,对吗?(替换为任何功能,如自动停车等)完全抽象的类与接口非常相似,实际上完全相同。当涉及到特定的语言时,就会出现差异。例如,在Java中,类只能扩展另一个类,但可以实现许多接口 关于你的例子是正确的。类是两个主要内容的集合:数据和处理该数据的方法。是的,您走在了正确的

我想知道我是否正确理解了完全抽象类和接口之间的理论区别。我理解技术上的差异


我的理解是,类用于具体对象,接口用于这些对象可以展示的特性。所以,如果我在制作一个汽车类,我想让汽车有一个导航功能,我会制作一个导航界面,而不是一个抽象类,对吗?(替换为任何功能,如自动停车等)

完全抽象的类与接口非常相似,实际上完全相同。当涉及到特定的语言时,就会出现差异。例如,在Java中,类只能扩展另一个类,但可以实现许多接口


关于你的例子是正确的。类是两个主要内容的集合:数据和处理该数据的方法。

是的,您走在了正确的轨道上。这样想吧。你有一个水果。但你不知道是哪一个。所以你制作了一个界面,这取决于用户现在如何使用这个界面。它可能是苹果、橘子或桃子。接口果实将有一定的大小、颜色和生长环境。尽管这些信息会根据不同的水果类型而变化


换句话说,界面就像是一个非常非常具体的东西的骨架,从长远来看,您正试图完成它

这两者之间的理论差异在这里是离题的,你可能想问一下

对于so来说,最接近主题的问题是你可以用它们做什么,你可能已经知道了--
类可以
实现两个
接口,它可以
扩展
只有一个
你是对的

船或飞机也可以有自动停车功能或导航系统。 但在大多数模型中,有些东西要么是船,要么是汽车(让我们把会飞的汽车排除在外…)


实际上,在Java中,抽象类是强制在特定(唯一)类别中进行扩展的好方法。如果你有AbstractPlane和AbstractBoat,你可以确定一个对象是一个或另一个。

因为这个主题是离题的,我将在这里发布一个简短的答案。概念上的区别:类指定实体的属性(通常被标识为名词,如“人”、“车”等)。接口指定一类实体的行为。一个完全抽象的类必须对其子类型进行假设——所有子类都将继承相同的属性,并且(根据定义)仍然是相同的实体(汽车、卡车、摩托车仍然是车辆)。接口对属性没有这样的假设;他们仅仅定义了一种实体(可驱动)可以做什么。谢谢daryl,这帮了大忙!只有当编程语言不支持多重继承时才是这样。