接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。
public interface Usb {
// 抽象方法可以省略abstract
public void start();
public void stop();
}
public class phone implements Usb{
// phone 类需实现 Usb 接口中规定的方法
@Override
public void start() { }
@Override
public void stop() { }
}
1. 注意事项
- 接口不能被实例化。
- 接口中的所有方法是public方法,接口中的抽象方法,可以不用abstract修饰。
- 一个普通类实现接口,就必须将该接口的所有方法都实现。
- 一个类同时可以实现多个接口
interface IB{
void hi();
}
interface IC{
void say();
}
class Pig implements IB,IC{
@Override
public void hi() { }
@Override
public void say() { }
}
- 接口不能继承其他的类,但是可以继承多个别的接口
interface ID extends IC,IB{ }
- 接口的修饰符只能是piblic和默认的
继承VS接口
当子类继承了父类,就自动拥有了父类的功能,如果子类需要扩展功能,可以通过实现接口的方式扩展。
- 继承主要解决代码的复用性和可维护性;接口主要在于设计好各种规范,让其他类去实现这些方法,更加的灵活
interface RUN{
void run();
}
class Animal{
private String name;
public Animal(String name) {
this.name = name;
}
public void say(){
System.out.println(name + "在说话");
}
}
class Dog extends Animal implements RUN{
public Dog(String name) {
super(name);
}
@Override
public void run() {
System.out.println("奔跑");
}
}
3. 接口多态
接口类型的变量,可以指向实现了接口的对象实例