当前位置: 首页 > 面试题库 >

Java除了拥有正确的方法之外,接口还有更多其他功能

洪飞扬
2023-03-14
问题内容

所以可以说我有这个界面:

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的实际类根据迭代中所位于的盒子而改变。



 类似资料:
  • 问题内容: 为什么没有人提及嵌套循环联接? 问题答案: 如果希望/可以读取未提交的记录,则在联接上使用(NOLOCK)可能会提高性能。 什么时候应该使用“with(nolock)”

  • 问题内容: 我正在研究部分应用程序的使用情况,但是我只能找到有关使用专有sun实现或Oracle特定实现的信息。 sun的实现不受支持,并且可能会发生变化。如果将来我想将其部署到非Sun虚拟机上,使用此方法也可能会导致问题,最后,它在构建日志中留下了无法抑制的警告,可以掩盖其他警告。 我是否可以与我的应用程序一起部署一个开源替代实现,该实现在多个数据库之间都能很好地工作?至少支持MySQL的东西。

  • 问题内容: 我在Windows 7上使用VirtualBox 5.0.6安装了Docker工具箱1.8.3。 在 Docker Quickstart Terminal 启动期间创建的 默认 虚拟机为定义了一个共享文件夹。是否可以将其他共享文件夹永久添加到该虚拟机,例如在主机上安装驱动器? __ 问题答案: 该boot2docker自述中提到 另外,Boot2Docker包括内置的VirtualBo

  • 护士通过请购单向三种不同供应品中的一种订购医疗供应品,所有供应品均由供应商提供。 护士 由于项目可以是三种类型中的一种,并且一个项目的申请可能还不存在,所以申请表具有3种供应类型的外键。 问题是:我正确列出的外键都指向3个不同的表,除了其中一个之外,每个条目都没有相应的外键。 我得到以下错误: 第1行错误:ORA-02091:事务回滚 ORA-02291:违反完整性约束(MMM1339.ITEMN

  • 问题内容: 我想在后端计算地理围栏违规和行车距离计算。这是我第一次使用google API。我在网上发现的所有内容都是针对Android的。是否有特定于常规计算的API。 问题答案: 您可以自己实现它,而无需使用任何框架,这非常容易… 我假设您要检查您是否在圆形地理围栏内。 为此,只需计算圆心与您的位置之间的距离(经度,纬度)。如果距离小于圆半径,则说明您在地理围栏内,否则就在地理围栏外。 像这样

  • 有没有可能通过JSONPath知道其他“路径”的存在? 我所说的现有“路径”是指类似于此JSON的“a.b.c”或“a.b.d”形式的字符串: 可以写一个JSONPath来判断除了a. b. c和a. b. d之外是否还有其他“路径”吗? 例如,在下面的JSON中,它应该发现有属性'e':