我一直在努力理解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
,这与我上面的问题有何关联。 - 随着默认方法的引入,我们是否还需要抽象类?
P.S.
请随意编辑问题,使其对其他 Stack Overflow 用户更有用。