接口 interface
1.接口的概念
2.接口是一种标准,所有实现该接口的子类都要实现这个标准。
3.接口也是一种契约,所有的实现该接口的子类都要实现该接口的条款
4.接口也是一种身份特征,所有的子类都具有该身份特征。
5.接口里面的所有方法都是抽象的,公有的。
6.接口里所有的成员变量都是常量。
7.接口可以继承接口
接口可以说是抽象类的抽象类
接口只定义抽象方法,但是不提供实现的方法,实现的方法是它的实例化类提供的
语法
public interface USBInterface{//接口名为USBInterface
void open();
void close();
}
一个接口是可以继承另外一个接口的
//这里写了一个抽象类Kingston来实现USBInterface中的部分方法,implement是类实现接口的关键字
//这里的close方法被注释掉了,所以此Kingston类是抽象类,因为没有完全实现接口里的抽象方法,若全部实现了就叫做基类
public abstract class Kingston implements USBInterface {
public void open(){
System.out.println("--open--");
}
// public void close(){
// System.out.println("--close--");
// }
//
// public static void main(String[] args) {
// Kingston ton =new Kingston();
// ton.open();
// ton.close();
// }
}
我们再写一个类来实现Kinston抽象类没实现的的功能,即类KingstonA继承Kingston抽象类,KingstonA类是Kingston抽象类的子类
public class KingstonA extends Kingston{
public void close(){
System.out.println("--close--");
}
public static void main(String[] args) {
KingstonA ton =new KingstonA();
ton.close();
}
}
接口和接口之间的继承关系
定义一个接口InterfaceA
public interface InterfaceA{
public void buyFruit();
}
定义一个另外一个接口InterfaceB
public interface InterfaceB {
public void buyFood();
}
把InterfaceC继承前两个接口(接口可以多继承)
public interface InterfaceC extends InterfaceA,InterfaceB {
void buyCar();
}
此时如果要写一个基类来实现接口InterfaceC的方法,必须把InterfaceA和InterfaceB里面定义的抽象方法一起实现
Example
public class Buyer implements InterfaceC{
public void buyFood(){
System.out.println("--buy food--");
}
public void buyFruit(){
System.out.println("--buy fruit--");
}
public void buyCar(){
System.out.println("--buy car--");
}
public static void main(String[] args) {
Buyer buyer =new Buyer();
buyer.buyFood();
buyer.buyFruit();
buyer.buyCar();
}
}
注意
- 接口里面可以不定义任何方法,但是如果要写方法,必须是抽象方法(即没有方法的实现)
- 接口与接口之间可以继承,并且一个接口可以继承多个接口
- 若要写一个类来实现接口里面的方法,这个类实现了全部方法就是基类,若没能全部实现,此类还是抽象类
abstract
,没实现的类可由子类来实现