【发布时间】:2010-09-30 09:47:46
【问题描述】:
请用简单的英语解释为什么我们需要以及为什么我们在面向对象开发中使用接口。
我很困惑。
[+] 我正在研究 Java。如果有,请提供 Java 中的示例代码。
谢谢大家。
【问题讨论】:
-
你搜索了吗? Stackoverflow 有很多此类问题的答案
-
“我们为什么需要接口以及为什么使用接口”看起来很像“为什么现在的类往往被定义为接口?”。
请用简单的英语解释为什么我们需要以及为什么我们在面向对象开发中使用接口。
我很困惑。
[+] 我正在研究 Java。如果有,请提供 Java 中的示例代码。
谢谢大家。
【问题讨论】:
您检查了吗,带有 Java 接口 的部分您有解释和一些 Java 示例
http://www.javabeginner.com/learn-java/java-abstract-class-and-interface
示例 1:下面是 Shape 接口的示例
interface Shape {
public double area();
public double volume();
}
下面是一个实现Shape接口的Point类。
public class Point implements Shape {
static int x, y;
public Point() {
x = 0;
y = 0;
}
public double area() {
return 0;
}
public double volume() {
return 0;
}
public static void print() {
System.out.println("point: " + x + "," + y);
}
public static void main(String args[]) {
Point p = new Point();
p.print();
}
}
【讨论】:
这是来自 JavaRanch 的 Java Beginner FAQ 部分的 entry。这可能会有所帮助。 此外,请转到JavaRanch。特别是对于 Java 初学者来说,没有其他更好的替代品了。
【讨论】:
接口用于描述 2 个对象的共同点,但实现方式不同。 mybook 给出的例子是鸭子。
假设你有 2 只鸭子
一个正常的活着的人
还有一个木制的
还有一个带有方法fly()的接口Ifly;
两者都能飞。所以 Fly 方法进入界面。因为当你实现一个接口时,你必然会实现该接口中的功能。 (就像合同一样!)
所以 Duck 实现了 IFly,并且在它的 fly 方法中它所做的一切都写入控制台说:I Can fly。
当木鸭说“我不会飞”时。
那么当你这样做时:
(C#对不起不懂java)
IFLy duck = new Duck()
duck.fly(); -- This will write I Can fly.
Ifly woodenduck = new WoodenDuck()
woodenduck.fly()
说我不会飞。
简而言之,接口描述了对象必须实现的内容,因此您可以将其视为合同。
希望这能让它更清楚一点,一开始也遇到了很多麻烦。
(srry无法解释真的很好)
【讨论】:
interface(在 java 中)是一个 uninstatiable 抽象类(它没有构造函数),它提供 public 方法,所有继承它们的子类必须 实施。
此外,继承的一个优点是便于使用multiple inheritance。
【讨论】:
您只提供interface 要做的事情,如何完成将在实施中介绍。
假设有一个接口Driver你会声明一个方法drive();
现在假设一个汽车司机实现了这个方法,那么他可以在那里编写他的代码。
如果飞行员实现驱动方法,那么他的代码..
我希望它清楚。
【讨论】:
Driver,而不是Drive。
你的意思是我们为什么需要接口或者为什么我们不只使用抽象类? 接口提供:
1)抽象和依赖倒置。高级课程不关心他们使用的具体低级课程。你有更多的抽象,你得到更多的灵活性。例如,您可以完全重写适用于 DB 的级别,而您的应用程序的其他级别保持不变,因为它们使用接口而不是具体实现。
2)在Java接口中提供多重继承
【讨论】:
老实说,您应该花时间阅读有关 Java 的好书。我推荐 Herbert Schildt 的 The Java Complete Reference。
首先要了解以下术语及其在 OO 上下文中的意义:
【讨论】: