1. 接口概念
java接口表示一种规范/约束,要求实现者必须遵守该规范
2. 定义接口
语法:
[public] interface 接口名{
方法定义;
}
注: 不使用public修饰符,表示仅仅可以被该接口所在的包内的其他类实现,对非该包内的类不可见
3. 接口内的成员
3.1 接口中没有构造器,不可以new
3.2 接口中定义的成员变量,实质是全局静态常量,即默认使用public static final修饰,所以一般使用全大写字母,用下划线连接
3.3 接口中定义的方法都是公共的抽象的方法,即默认使用public abstract修饰符,不能使用private, protected,static等修饰符
3.4 接口中定义的内部类都是公共的静态的内部类,即默认使用publics static修饰符
public interface InterfaceDemo{
//成员变量
int NUM = 10;
void test();
//private void sayHello1(); --编译报错
//protected void sayHello2(); --编译报错
//static void sayHello3(); --编译报错
}
public class Hello implements InterfaceDemo{
@Override
public void test() {
// TODO Auto-generated method stub
System.out.println(InterfaceDemo.NUM);
// NUM = 20; --编译报错, 因为NUM默认是final修饰的
}
}
4. 接口的特点
4.1 没有构造方法,也不能显示定义构造器,不能实例化
4.2 接口只能继承接口,不能继承类(Object类不是接口的父类),且接口支持多继承
4.3 接口的方法全是公共抽象非静态的,所以实现类复写的方法也必须是public修饰
4.4 接口的成员变量全是全局静态常量
4.5 接口的内部类全是公共静态的
4.6 接口和接口之间可以是继承关系,接口与实现类只能是实现关系
5. 面向接口编程
接口类型 变量名 = 实现类 (即用接口类型变量接收实现类的实例对象)
6. 比较抽象类与接口
6.1 相同点:
6.1.1 都位于继承的顶端(抽象类是Object类的子类),用于被其他类继承或实现
6.1.2 都不能使用new 来实例化
6.1.3 都可以定义抽象方法,其子类或实现类必须实现复写这些抽象方法
6.2 不同点:
6.2.1 接口中没有构造器,抽象类有构造器,因为抽象类必须有子类,创建子类必须调用父类构造器
6.2.2 抽象类中可以有非抽象方法,接口中的方法全部是抽象方法
6.2.3 类中鞥单继承,接口可以多继承多实现
6.2.4 接口中成员变量都是public static final修饰的
6.2.5 接口中的方法全是public abstract修饰的
6.2.6 接口中的内部类都是public static修饰的