可能重复:
Java Interfaces?
我不是最新的java,但有一件事我到目前为止还无法理解接口解决的目的究竟是什么?我知道为了使用java附加多重继承,可以使用它,但这不应该是灵魂原因。接口的大多数其他目标都可以由抽象类提供。即便是书籍也没有给出足够的答案。
答案 0 :(得分:1)
接口不提供类的多重继承。虽然接口可以扩展多个其他接口。
界面类似于合同。例如,您是一类名为Human的对象。然后,你有多个函数与fufil,这些函数对于所有Human对象都不是通用的。比如你支付手机合同,为妻子做晚餐等。
接口只是告诉您对象要为您做什么。和Class一样定义它。
希望有所帮助。
答案 1 :(得分:1)
我知道为了用java附加多重继承 可以使用,但这不应该是灵魂的原因
为什么不能为您提供 多接口继承 并非真正重要的解决方案,您不解释。
除了非常重要的事实(这有助于Java不让C++
中出现diamond problem) - 你认为没什么大不了的还可以模拟对象之间的不同关系
abstract
类将用于建模is-a
关系。通过界面,您可以建模has-a
关系,捕获组合,并且您还可以在类之间组合通用功能,否则这些功能将彼此无关。
答案 2 :(得分:0)
定义Type
接口是最佳候选者。阅读4-Classes And Interfaces
中的第Effective Java
章。
答案 3 :(得分:0)
我将为您提供一个使用界面的小例子。
我的课程Company
包含ArrayList<Employee> employees
和一个函数giveRaise()
,通过增加工资来给员工加薪。
现在想象一下,我有三个班级Employee
,Manager
,SalesPerson
,而不是Developer
,他们都得到加薪,但每个班级都有所不同。
您认为可以创建名为Employee的超类,但您不希望使用相同的方法giveRaise(),并且您不希望对giveRaise()进行默认处理。
所以你需要做的就是每次你创建一个类(如开发人员编写一个新类),继承自Employee
你想要强制它来实现函数giveRaise和定义它。
这就是接口方便的地方。当然,您可以使用抽象类。但是你可以继续从另一个类继承接口。
答案 4 :(得分:0)
由于它是generell中接口的最大优势,你可以开发一个更自主的程序部分,因为在一个接口上你有一些需要实现的契约,以及你可以依赖它的东西在那里供你使用(在程序的其他部分)。