接口interface
关于接口:
1、接口也是一种“引用数据类型”。编译之后也是一个class字节码文件。
2、接口是完全抽象的。(抽象类是半抽象。)或者也可以说接口是特殊的抽象类。
3、接口怎么定义,语法是什么?
[修饰符列表] interface 接口名{}
4、接口支持多继承,一个接口可以继承多个接口。
5、接口中只包含两部分内容,一部分是:常量。一部分是:抽象方法。
6、接口中所有的元素都是public修饰的
7、接口中抽象方法的public abstract可以省略。
8、接口中常量的public static final可以省略。
例如如下代码
interface A{
int k = 100;//k是常量,在接口中常量的public static final可以省略。
int sum(int a,int b);//sum是抽象方法,接口中抽象方法的public abstract可以省略。
}
interface B{}
interface C extends A,B{}// 一个接口可以继承多个接口(支持多继承)
实现implements
类和类之间叫做继承,类和接口之间叫做实现。
继承使用extends关键字完成。
实现使用implements关键字完成。
注意:接口(interface)也是抽象的,所以说抽象类的注意事项在接口处同样适用,例如无法实例化等等。
当一个非抽象的类实现接口的话,
必须将接口中所有的抽象方法全部实现(覆盖、重写)!!!
如下定义接口MyMath:
interface MyMath{
double PI = 3.1415926;
int sum(int a, int b);
int sub(int a, int b);
}
class MyMathImpl implements MyMath{
public int sum(int a, int b){
return a + b;
}
public int sub(int a, int b){
return a - b;
}
}
在主方法可以这样调用接口和类:
public static void main(String[] args){
MyMath mm = new MyMathImpl();//多态
int result1 = mm.sum(10, 20);// 调用接口里面的方法(面向接口编程。)
}
一个类可以同时实现多个接口
接口和接口之间支持多继承且一个类可以同时实现多个接口。
这种机制弥补了java中类和类只支持单继承的缺陷!现在也可以实现类似的多继承了!
interface A{}
interface B{}
interface C{}
class D implements A,B,C{}//一个类同时实现多个接口
继承和实现同时存在
继承和实现都存在的话,代码应该怎么写?
extends 关键字在前。
implements 关键字在后。
例如如下代码:
class A{}
interface B{}
class C extends A implements B{}//继承和实现同时存在