所以可以说我有这个界面:
public interface IBox { public void setSize(int size); public int getSize(); public int getArea(); //...and so on }
我有一个实现它的类:
public class Rectangle implements IBox { private int size; //Methods here }
如果我想使用接口IBox,则无法以这种方式实际创建它的实例:
public static void main(String args[]) { Ibox myBox=new Ibox(); }
对?所以我实际上必须这样做:
public static void main(String args[]) { Rectangle myBox=new Rectangle(); }
如果是这样,那么接口的唯一目的是确保实现接口的类中具有接口所描述的正确方法?还是接口还有其他用途?
接口是使代码更灵活的一种方法。你要做的是:
Ibox myBox=new Rectangle();
然后,稍后,如果你决定要使用其他类型的框(也许还有另一个库,其中框的类型更好),则将代码切换为:
Ibox myBox=new OtherKindOfBox();
一旦习惯了,就会发现它是一种很棒的(实际上是必不可少的)工作方式。
另一个原因是,例如,如果要创建一个盒子列表并对每个盒子执行一些操作,但是希望该列表包含不同种类的盒子。在每个盒子上,你可以执行以下操作:
myBox.close()
(假设IBox具有close()方法),即使myBox的实际类根据迭代中所位于的盒子而改变。