接口interface
我们的普通类里,只能写具体的方法实现;
抽象类里,可以书写方法的具体实现和没有具体实现的抽象方法(规范);
那有没有什么东西,只有规范呢?
1.什么是接口?
接口是静态常量和抽象方法的集合(都为公有的),接口的本质就是一种规范。
拿生活中的防盗门举例子理解一下接口的作用,门有开门关门,锁有上锁开锁,防盗门既有开门关门,又是上锁和开锁,但是Java是单继承,只能直接的继承一个类,不能一起继承门和锁,所以此时可以将锁定义成接口,去实现这个接口。
2.接口的定义
接口使用interface关键字定义。
例:
package com.dh.intrerfacedemo;
//定义一个接口
//同类的定义一样,只能使用public和default修饰符
public interface InterfaceDemo {
}
即在接口中,书写的变量为公有静态常量,书写的方法为公有抽象方法。
package com.dh.intrerfacedemo;
//定义一个接口
public interface InterfaceDemo {
//公有的静态常量
int AGE = 10; //本质是public static final int AGE
//共有的抽象方法
void show(); //本质是public abstract void show();
}
注意:接口不是类,没有构造方法,也不能实例化对象。
3.接口的实现
使用implements实现接口。
实现一个接口,必须重写其所有的方法。
例:
可以实现多个接口,接口之间使用 , 隔开:
再定义一个接口:
package com.dh.intrerfacedemo;
public interface InterfaceDemo2 {
void show2();
}
4.接口继承接口
类可以继承类,接口也可以继承接口,接口之间的继承也是使用extends关键字
并且支持多继承
再定义一个接口:
package com.dh.intrerfacedemo;
public interface InterfaceDemo3 {
void show3();
}
实现一个接口,不但要实现该接口的方法,也要实现其父接口的抽象方法。
5.接口与抽象类的区别
- 共同点:都不能实例化对象。实现接口和继承抽象类都必须实现它们中的抽象方法。
- 不同点:
- 接口使用interface定义,抽象类使用class定义,使用abstract修饰;
- 接口中的方法一定为抽象方法,抽象类中可以有抽象方法和非抽象方法;
- 接口中的变量和方法都使用public修饰,抽象类中可以任意权限修饰符;
- 接口没有构造方法,抽象类有构造方法;
- 实现接口使用implements,继承抽象类使用extends;
- 接口支持多实现,并且接口与接口之间也可多继承,抽象类的继承只能单继承。
接口在日后的编程中会经常使用~
本人水平有限,若有错误,望指出~