java不支持多继承性,即一个接口不能有多个父类。单继承性使得java简单,由于管理。为了克服单继承性的的缺点,java使用了接口,一个类可以实现多个接口。
概念
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。
基础语法
特点
- 接口也是一种"引用数据类型"。编译之后也是一个class字节码文件。
- 接口是完全抽象的。(抽象类是半抽象)或者也可以说接口是特殊的抽象类。
- 接口支持多继承,一个接口可以继承多个接口。
- 接口中只包含两部分内容,一部分是常量,一部分是抽象方法。
- 接口中所有变量都用public修饰。
- 由于接口里面都是抽像方法,故 public abstract 可省略,且不能有方法体。
- 接口中 public static final 也是可以省略的。
interface A{
}
interface B extends A{
}
interface C extends A,B{
}
接口的使用
接口是用来被类实现的,实现接口的类称为实现类。实现类可以理解为所谓的子类。
修饰符 class 实现类 implements 接口1,接口2...{
}
从例子可以看出,接口可以被类单独实现,也可以多实现;一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类。下面给出一个例子带大家了解一下。
有一个篮球运动员类,还定义了三个接口,用运动员类分别调用这三个接口:
public class Text {
public static void main(String[] args) {
BasketBallman Kun = new BasketBallman();
Kun.Eat();
Kun.Rule();
Kun.Sleep();
}
}
public class BasketBallman implements Law,People{
@Override
public void Sleep() {
System.out.println("运动员要睡觉");
}
@Override
public void Eat() {
System.out.println("运动员要吃饭");
}
@Override
public void Rule() {
System.out.println("运动员要守规则");
}
}
public interface Law {
void Rule();
}
public interface People {
void Sleep();
void Eat();
}
我们在这里总结一下:
类和类的关系:单继承。
类和接口的关系:多实现。
接口和接口的关系:多继承,一个接口可以同时继承多个接口。