为什么需要接口?
接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。
接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。
**
接口: interface
**
格式: public interface 接口名{
//抽象方法
public void foo();
//无方法体 默认是抽象方法(默认使用abstract修饰
访问权限修饰符默认是public 访问权限修饰符只能是public
所以 public abstract默认可省略)
void foo();
//属性
public static final int age=19;
//接口中的属性只能是静态常量 使用时必须赋初值
//默认是static final修饰 可以省略 访问权限修饰符只能是public
int age=10;
}
接口的特征:
1.接口不可以被实例化
2.实现类必须实现接口中的所有抽象方法**(implements)**
3.实现类可以实现多个接口(即解决了java多继承的问题)
4.接口中的方法同抽象类的方法一样没有方法体,接口中的方法默认使用 abstract修饰(可省略) 访问权限修饰符只能是public
5.接口中的变量必须都是静态常量(static final修饰 static final可省略 变量的访问权限修饰符只能是public(可省) 常量必须赋初值。
6.接口中默认所有方法都是抽象方法 无方法体但可以有参数列表(接口中不存在构造方法)
接口/抽象类中的方法:不去执行任何的操作,所以去实例化接口/抽象类调用方法也毫无意义;
继承:子类只可以继承一个父类 单继承
接口:通过去实现多个接口 可以实现意义上的多继承(java中并不存在多继承的概念)
`
interface USB {
//默认是 abstract 抽象的 访问权限修饰符是默认的public(只能是public)
void read();
void write();
}
public class YouPan implements USB {
//实现接口 USB 并且重写它的read() 和write()方法
@Override
public void read() {
System.out.println("U盘正在通过USB功能读取数据");
}
@Override
public void write() {
System.out.println("U盘正在通过USB功能写入数据");
}
}
public class JianPan implements USB {
//实现接口 USB 并且重写它的read() 和write()方法
@Override
public void read() {
System.out.println("键盘正在通过USB功能读取数据");
}
@Override
public void write() {
System.out.println("键盘正在通过USB功能写入数据");
}
}
public class USBTest {
public static void main(String[] args) {
//接口不能实例化
//USB usb=new USB();
YouPan youPan=new YouPan();
JianPan jianPan=new JianPan();
youPan.read();
youPan.write();
jianPan.read();
jianPan.write();
}
}
``