这个问题是在我努力理解 Java/C# 中的接口时提出的。正如我的程序员朋友告诉我的,接口是最容易理解但很难有效使用的概念之一。任何想要投反对票的人,请考虑在投反对票之前指导我正确的方向(我不介意,只要我获得了我所寻求的知识)。
我了解界面的工作原理,但它的使用对我来说似乎有点模糊。
考虑一下:
public interface Drawable {
public void draw(Graphics g);
}
public class Line implements Drawable {
public void draw(Graphics g) {
. . . // do something---presumably, draw a line
}
. . . // other methods and variables
}
现在,要对此做点什么,我仍然需要做:
Drawable newObject= new line();
我有一个 Drawable 类型,但我仍然需要创建类的新对象 line。话虽如此,如果我错了,请纠正我,我仍在创建一个类对象,这意味着;写上面的代码并不能帮助我节省任何内存,如果上面的事情是为了内存优化而做的(我知道它更多地与抽象相关而不是内存)。
我的问题是:如果类行具有在它实现的接口上指定的方法,为什么我不能只执行以下操作?
public class Line {
public void draw(Graphics g) {
. . . // do something---presumably, draw a line
}
. . . // other methods and variables
}
line newObject= new line();
毕竟,接口除了创建一个基本类型之外什么也没做。我的新手理解是:第二个根本不需要接口并减少代码。
我可以对抽象类采取相同的方法并说同样的话,因为您仍然必须为具体的子类提供覆盖的方法。我的问题是,为什么不声明和创建不需要抽象类的具体对象。
我确定我在这里遗漏了一些东西。是什么让界面如此有用?对我来说,当实际的事情由实际的类完成时,它只是添加更多的代码。有人可以解释一下吗?