【发布时间】:2017-09-10 09:34:01
【问题描述】:
我一直在尝试了解 default 和 static 方法在 java 8 中的实际工作原理?
考虑以下接口:
public interface Car {
default void drive() {
System.out.println("Default Driving");
}
static int getWheelCount(){
return wheelCount;
}
int wheelCount = 7;
}
以及以下实现:
public class Benz implements Car { }
现在,如果我转到我的主要方法并编写:
public static void main(String[] args){
Car car = new Benz();
car.drive();
System.out.println(Car.getWheelCount());
System.out.println(Car.wheelCount);
}
我想知道幕后到底发生了什么:
- 是否以类似于抽象类的工作方式对
Car的实例调用默认方法? - 为了支持接口中的默认和静态方法,该语言需要哪些新功能/修改?
- 我知道默认情况下,界面中的所有字段都默认为
public static final,这与我的上述问题有什么关系。 - 随着默认方法的引入,我们不再需要抽象类了吗?
附言
请随时编辑问题,使其对其他 SO 用户更有用。
【问题讨论】:
-
为了让您的问题对其他用户有所帮助,请将它们限制在每个帖子中。
-
最后的 4 个问题似乎都与默认方法和接口有关。我认为将它们包含在单独的帖子中没有意义,将它们组合在一起更有意义。
-
@Kerry:第四个问题显然是几个已经存在的问题的重复。这已经说明了为什么一次问几个完全不同的问题是不好的。所有标有java-8 的问题都与它们引用 java 8 相关,但在不同的帖子中写不同的问题仍然是有意义的。