接口FAQ
接口能不能继承接口
能。大胆的写接口继承,因为这比类继承更为优雅。面向对象的一个原则就是使用组合替代继承,但是接口继承不在此列。接口内部能不能写实现
能。但是仅限于JAVA8以后。
interface I {
default void f() {
System.out.println("Hello World");
}
}
- 接口中能不能有内部类
可以。事实上JAVA8以前为接口提供内部实现就是这样做的。
interface I {
void f();
class DefaultImpl implements I {
@Override
public void f() {
System.out.println("Hello World");
}
}
I defaultImpl = new DefaultImpl();
}
class A implements I {
@Override
public void f() {
defaultImpl.f();
}
}
- 接口能不能有成员?
不能有实例成员,但是可以有public final static的成员(当然这三个你可以一个都不写)。因为类可以实现多个接口,如果接口的静态成员名称一样,在你使用时编译器就会报错的。
- 接口和抽象类的本质区别?
接口和抽象类的表面区别就是类只能单继承,而接口可以多继承。当你关注一个操作时,请使用接口。当你关注一个对象的本质时,请使用抽象类。
类FAQ
文件和类
一个JAVA文件至多包含一个public的顶级类。这个类必须和文件名相同。其他类必须是default权限。其他顶级类的必须是defalt的。super