基本概念
接口就是一种规则,是对全局常量和公共抽象方法的抽象集合。
- 接口中定义的变量和方法都包含默认修饰符,其中定义的变量默认声明为public static final,即全局常量;定义的方法都默认声明为public abstract
- 接口不能实例化,不能使用new来创建,因为接口中都是抽象方法。
接口的实现
格式:用interface关键字来定义接口
public interface 接口名{}
接口和类之间是实现关系,通过implements关键字表示
public class 类名 implements 接口名1,接口名2{}
例子:
interface Toy(){
void showToy();
}
interface Tech(){
void showTech();
}
class childLego implements Toy,Tech{
public void showToy(){
System.out.println("Toy");
}
public void showTech(){
System.out.println("Tech");
}
}
接口的继承
概念:与父类相似的是,接口也可以通过extends关键字实现继承。继承父接口的子接口会获得父接口中定义的所有抽象方法和变量。需要注意的是,接口支持多重继承,即一个接口可以继承多个父接口。
格式:
interface 接口名 extends 接口列表{
全局变量声明;
抽象方法声明;
}
要么重写接口中的所有抽象方法(子类以及其继承的父类中的),要么是抽象类
接口的特点
接口中成员变量的特点
- 成员变量只能是常量
- 成员变量默认带有修饰符 public static final
接口中成员方法的特点
- 成员方法只能是抽象方法
- 默认修饰符 public abstract
接口和类之间的关系
- 类和类的关系
继承关系,只能单继承,不能多继承,但是可以多层继承
- 类和接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口和类的实现关系可以是单实现,也可以是多实现
public class 类名 implements 接口1,接口2{}
实现类(实现接口的类)还可以在继承一个类的同时实现多个接口
public class 类名 extends 父类 implements 接口1,接口2{}
- 接口和接口的关系
继承关系,既可以单继承,也可以多继承
接口与抽象类的比较
区别 | 接口 | 抽象类 |
---|---|---|
含义 | 接口通常描述的是一个类的其它次要一些的特征、属性,不是核心特征 | 抽象类定义的是其子类的核心特征、属性等,正好与接口互补 |
方法 | 接口只提供方法声明 | 抽象类可以提供完整方法、默认构造方法等等 |
变量 | 默认由public、static、final关键字修饰 | 可以包含实例变量和静态变量 |
多重继承 | 一个类可以继承多个接口 | 一个类只能继承一个抽象类 |
实现类 | 类可以实现多个接口 | 类必须重写抽象类 |