Abstract class or interface Java
Possible Duplicate:
Interface or abstract class?
Abstract and Interface in java
号
我还是JAVA的学生,我遇到过抽象类和接口。
现在,当您创建一个抽象类时,您可以编写如下方法:
1
| public abstract void something(); |
但是,当您在界面中创建一个方法时,它看起来是这样的:
1
| public void something(); |
号
现在我不是瞎的,我可以看到有一些不同,我也知道你是一个抽象类,你是一个接口。
但是,有人能告诉我区别是什么吗?也许这是一个例子,说明你在哪里使用一个而不是另一个?
- 很抱歉,请删除我的帖子,然后:(
- 避免询问有关Java的基本问题。谷歌一直在帮助你。只问你是否做过调查,仍然不理解,但要在你的问题中陈述你发现了什么,解释什么,等等,但你还是很困惑。
- @ADTC谢谢你,我会记住这一点的。
- 不客气。很遗憾,很多退伍军人都懒得指导像你这样的新用户。他们很快就标记出重复的问题并结束提问。我不想让你经历我第一次来这里的经历。:)
- 事实上,就问题而言,还不错。当然,Web上包含了关于接口和抽象类之间的差异的信息,但是这个问题的有趣之处在于它显示了Java的语法如何混淆初学者。由于接口中的每个方法都是抽象的,因此根据定义,不使用abstract修饰符。
- 我不会说他们刻薄,但更像是冷漠和冷漠。
- 我知道这是一个旧的帖子,但+1来自我,因为我也是一个非常新的人,这条线帮助使事情更清楚。
"abstract"基本上意味着该方法没有实现。实现必须由子类提供。因此,不能创建具有抽象方法的类的实例。
现在Java中的接口只是方法签名的集合。它们不能包含设计实现。因此,abstract关键字将是多余的。不能创建接口的实例,只能创建实现接口的具体类的实例。
- 接口是否类似于C中的头文件?:)顺便说一句,我可以创建抽象类的"实例",但它们应该引用扩展具体类的实例。像AnAbstractClass x = new AConcreteClassExtendingAnAbstractClass();一样(抱歉,我不知道如何正确地解释这一点,因此引述了吓人的话。)
- @ADTC接口就像一个契约,指定对象支持哪些操作。例如,您可以将接口用作函数参数,就像在collections.sort(list list)中那样。另一方面,C中的头文件可以包含任意函数定义,不一定只包含抽象类方法的定义。头文件甚至可以包含(内联函数的)实现
这两个程序没有区别。区别在于abstract类可以包含用于所有实现的公共逻辑,而接口不能。