接口中常见的成员
全局常量 public static final
抽象方法 public abstract
接口中所有成员的修饰符都是固定的,在定义接口的时候如果没有写上,编译器会自动加上,所以编译的时候也能通过。
interface Demo{
int a = 9;
}
class Test {
public static void main(String[] args){
System.out.println(Demo.a); // 9
}
}
a是publc staic final修饰的,所以可以使用类名调用。
尽管编译器会自动给接口的成员加上固定修饰符,但是为了提高阅读性,还是建议加上修饰符。
注意,由于接口中的方法固定修饰符都是public的,当继承覆盖方法的时候必须也是public的,否则无法完成覆盖。
子类可以实现接口,如果不实现接口的所有方法,可以将子类定义成抽象类。
一个类可以实现多个接口---多实现
interface A {
public abstract void show();
}
interface B {
public abstract void show();
}
class Test interface A,B{
public void show(){ //该方法实现A,B中的两个方法,不需要实现两次
...
}
}
接口与接口之间是继承关系,而且接口直接可以多继承
interface A{
}
interface B{
}
interface C extends A,B{
}
问题:为什么java接口的字段要定义成 static final的?
static:如果一个类实现了多个接口,就有可能出现重名变量,接口没有super,哪到底访问的是哪个变量呢?需要使用类名来区分变量,属于类的变量应该定义成static。
final: static的变量的类的,也就是所有实现了该接口的类公有的,如果不是final的,那么就有可能会被修改,class A 修改了之后class B得到的就是修改后的数据,这不安全。
简而言之,就是防重名,防修改。
注:上述内容如有理解不足或错误,忘请指出。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。