java中接口
1.java接口定义
百度百科给的这样的定义:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为,
2. java接口的声明与特性
- 声明
- 声明语法:
[访问修饰符] interface 接口名称 [extends 其他的类名] {
// 变量
// 抽象方法
}
又或者下面这个例子:
每个人的生活习惯和存款是不一样的,所以针对具体的人,我们需要遵守一套接口,这样才不会是异类。
interface man{
void run();
void get_money();
}
class father implements man {
void run(
System.out.println("I can run 5Km");
)
void get_money(
System.out.println("I have 50000000 rmb");
)
}
class son implements man {
void run(
System.out.println("I can run 1Km");
)
void get_money(
System.out.println("I have 500 rmb");
)
}
- 接口特性
- 接口方法不能在接口中实现,只能在使用该接口的类中实现,否则编译器报错。
- java接口中的方法隐式指定为
public abstract(即:都是公有的),而且也只能是public abstract..所以一般情况下,我们看到的接口中,没有public abstract关键字,都是interface. - java接口中的变量,隐式定义
为public static final
3.java接口与类的差别
- 当类实现接口时,类要实现接口中所有的方法,否则类必须声明为抽象类。
interface man{
void run();
void get_money();
}
class father implements man {
public void run() {
System.out.println("I can run 5Km");
}
public void get_money(){
System.out.println("I have 50000000 rmb");
}
}
class son implements man {
public void run() { //小细节,如果这里丢掉了public,编译就报错了,因为接口中的类型是public abstract.
System.out.println("I can run 1Km");
}
public void get_money() {
System.out.println("I have 500 rmb");
}
}
public class interface_t {
public static void main(String []args){
father fa1 = new father();
son sa1 = new son();
fa1.run();
fa1.get_money();
sa1.run();
sa1.get_money();
}
}
运行结果:
I can run 5Km
I have 50000000 rmb
I can run 1Km
I have 500 rmb
针对上面的例子如果我们在father接口中没有实现get_money()方法,那么编译器就报错了。下面提示可以看到,父类father不是抽象方法,而且也没有覆盖抽象方法。如果我们把父类改成抽象类,现有的代码也不能运行,因为抽象类无法实例化,所以抽象类和接口必须被继承。这里大家注意就行了。
interface_t.java:6: error: father is not abstract and does not override abstract method get_money() in man
class father implements man {
^
interface_t.java:16: error: cannot find symbol
fa1.get_money();
^
symbol: method get_money()
location: variable fa1 of type father
2 errors
- 类通过关键字implements 来使用接口。
- 接口不能实例化对象
- 接口没有构造函数
- 接口中的成员变量,默认都是public static final
- 接口支持多继承,(java中类只能继承一个类,所以接口的出现,使得java可以近似支持多继承)
1万+

被折叠的 条评论
为什么被折叠?



