Device.java
public interface Device {
public abstract void start();
}DeviceImpl.java
public class DeviceImpl implements Device { public void start() { // 这个方法不是abstract,怎么也可以正常运行? Java的语法检查出问题了吗?
System.out.println("Device started!");
} public static void main(String[] args) {
DeviceImpl t = new DeviceImpl();
t.start();
}}
public interface Device {
public abstract void start();
}DeviceImpl.java
public class DeviceImpl implements Device { public void start() { // 这个方法不是abstract,怎么也可以正常运行? Java的语法检查出问题了吗?
System.out.println("Device started!");
} public static void main(String[] args) {
DeviceImpl t = new DeviceImpl();
t.start();
}}
DeviceImpl是实现了device接口的类,那么所实现接口中的方法必须都得实现成为具体方法,而具体类中的方法不能用abstract,abstract只能在抽象类里用。
接口中的好像默认都是abstract,不用单独写出来
但是在接口方法定义时,在方法前面加abstract修饰符,却是不常见的。被误导了:
理解成了,加abstract后,第一个实现该接口的类,必须是抽象类,只有第二层类才可以具体类。
(一开始觉得这是一种很神奇的用法,没想到,是自己绕进去了-_-||)