除了抽象之外的接口的实用程序是什么,并为多重继承提供了一种解决方法?
如果某个接口I
的方法m1()
由类A
实现,另一个类B
想要访问方法m()
,那么这里需要接口。
我们可以简单地在类A
中不实现该方法吗?喜欢 -
public class A implements I {
public void m1() {
// business logic goes here
}
}
public class B {
A objectOfA = new A();
objectOfA.m1;
}
答案 0 :(得分:3)
这是一个基本的面向对象编程问题。我建议你阅读OOP。界面有助于解耦您的设计和实施,使重用代码更容易。还要重新设计一些有关设计模式的材料。 首创设计模式是一个良好的开端而不是那么难。
答案 1 :(得分:2)
简单地说,Interface就是契约。一个很好的例子是List
接口。ArrayList
和LinkedList
实现了List
接口。我们知道。您还知道java.util.Collections
提供了接口的方法,例如sort()。
关键是,这个代码可用于排序()ArrayList
或LinkedList
,因为它们实现了List
接口,但你也可以编写自己的代码代码实现更酷的东西。这样,人们可以使用你的代码,而不必要求你支持他们的类。
答案 2 :(得分:1)
是的,我们可以在A类中简单地实现该方法。但是,让我们举一个Interface的例子,以便您可以理解您的代码。 OOP中存在可重用性的概念。
接口定义了一个新辅助节点 Java中的数据类型。
接口仅是引用类型 无法创建其对象。
接口可以继承另一个接口 但不能继承任何类。
类不能继承任何接口 它(一个类)可以实现零到多 接口。 如果一个类实现了接口,那么
1)它必须覆盖所有摘要 所有已实现接口的方法。
2)在两者之间创建类型兼容性 界面和类。它允许一个 接口引用可以引用对象 实施课程。 * /
interface Iface
{
int x = 3;//final and public by default
void f();//abstract and public by default
}
interface AnotherI extends Iface
{
//more declarations possible here
}
class InterfaceDemo implements Iface
{
public void f()
{
int i;
for(i =0 ; i< x; i++)
System.out.println("Interfaces are widely used");
}
public static void main(String args[])
{
Iface ref = new InterfaceDemo();
ref.f();//allowed
//ref.newMethodsOfClass();//not allowed
}
}
答案 3 :(得分:0)
一个实际的例子
List<String> list;
list = thereIsMuchData ? new ArrayList<>() : new LinkedList<>();
public void f(List<String> strings) { ... }
列出是实现类的接口,ArrayList和LinkedList。
您可以看到以下内容:
根据技术知识,您可以选择实施。 在这个java中,disting从简单的语言中找到了自己的所有列表。
列表的使用不是特定的。
方法f
可以处理所有类型的列表。
答案 4 :(得分:0)
我同意@IdleMind。接口也强制您实现包含接口的所有方法。你可以说它是你实现它的具体类的契约。