接口概述
狭义:指Java中的interface
广义:对外提供规则的都是接口
接口特点
(1)接口使用关键字interface表示
interface 接口名 {}
(2)类实现接口使用implements表示
class 类名 implements 接口名 {}
(3)接口不能实例化:以多态方式来实例化
(4)接口子类
[1]可以是抽象类,但意义不大
[2]可以是具体类,重写接口中的所有抽象方法(极度推荐)
成员变量:只能是常量,并且是静态的公共的
默认修饰符:public static final
构造方法:接口没有构造方法
成员方法:只能是抽象方法
默认修饰符:public abstract
类与类,类与接口,接口与接口关系
(1)类与类
继承关系,只能单继承,可以多层继承(往上继承,继承父类,超父类,基类)
(2)类与接口
实现关系,可以单实现,也可以多实现
且可以在继承一个类的同时实现多个接口
(3)接口与接口
继承关系,可以单继承,也可以多继承
抽象类和接口区别
(1)成员区别
[1]抽象类
成员变量:可以变量,也可以常量
构造方法:有
成员方法:可以抽象,也可以非抽象
[2]接口
成员变量:只可以常量
成员方法:只可以抽象
(2)关系区别
[1]类与类
继承,单继承
[2]类与接口
实现,单实现,多实现
[3]接口与接口
继承,单继承,多继承
(3)设计理念区别
[1]抽象类 被继承体现的是“is a”关系。抽象类中定义的是该继承体系的共性功能
[2]接口 被实现体现的是“like a”关系。接口中定义的是继承体系的扩展功能
class Interface{
public static void main(String[] args){
// Inter i = new Inter(); //接口不能实例化,因为调用抽象方法没有意义
Inter i = new InSon();
i.print();
InterB iB = new InSon();
iB.printB();
}
}
interface Inter{
public static final int num = 10;
//public Inter(){}; //接口中没有构造方法
//public void println(){}; //接口中不能定义非抽象方法
public abstract void print(); //接口中的方法都是抽象类
}
interface InterB{
public abstract void printB(); //接口中的方法都是抽象类
}
// 可以单继承,也可以多继承
interface InterC extends Inter,InterB{
}
//类与接口,实现关系,可以单实现,也可以多实现
class InSon implements Inter,InterB{
public void print(){
// num = 15;
System.out.println("输出Inter");
}
public void printB(){
System.out.println("输出InterB");
}
}