小编aug*_*123的帖子

我何时必须使用接口而不是抽象类?

我想知道什么时候应该使用接口.

让我们考虑以下事项:

public abstract class Vehicle {
   abstract float getSpeed();
}
Run Code Online (Sandbox Code Playgroud)

并且:

public interface IVehicle {
  float getSpeed();
}
Run Code Online (Sandbox Code Playgroud)

我可以很容易地实现它们,它们具有相同的功能......但是我也可以在我的车辆类中添加一些变量,这些变量可能应该用在车辆中(maxSpeed,carType ......)

使用接口的原因是什么?

谢谢!

编辑:我在另一个帖子中找到了一个很好的链接:http://www.thecoldsun.com/en/content/01-2009/abstract-classes-and-interfaces

java oop inheritance abstract-class interface

85
推荐指数
6
解决办法
16万
查看次数

Foreach 针对 for(int...) 循环 - 为什么在删除元素时 foreach 会引发异常?

我想知道为什么我不能从列表中删除元素,当我使用 foreach 循环迭代它时:

List<Object> objects = new ArrayList<Object>();
Object one = new Object();
Object two = new Object();
Object three = new Object(); 

objects.add(one);
objects.add(two);
objects.add(three);
Run Code Online (Sandbox Code Playgroud)

然后删除元素,如:

foreach(Object o : objects){
  objects.remove(three); //I know that o is my current object
}
Run Code Online (Sandbox Code Playgroud)

似乎 foreach 循环不允许删除循环队列中“静止”的对象。我对么?

为什么 for-int-loop 不关心这个?在这个循环中,我可以轻松删除仍在循环中的对象。

谢谢

java foreach for-loop

5
推荐指数
1
解决办法
480
查看次数

标签 统计

java ×2

abstract-class ×1

for-loop ×1

foreach ×1

inheritance ×1

interface ×1

oop ×1