接口
接口的语法:
public interface 接口名称{ // interface关键字修饰的类
}
public interface MyInterface { //定义一个接口 }
注意:此接口非彼接口
程序员之间经常交流的接口:通讯接口
interface关键修饰的接口:java中的基础,是设计上的一种扩展
接口的好处
1、解决了单继承的局限性
2、将设计和实现分离,对外(调用者)隐藏了实现(而通常调用者也不需要关心实现)
3、面向接口编程是OOP的核心
接口的注意事项
接口:类与类之间只能单继承, 而接口突破了这个限制.
1、接口不能实例化
2、接口它的属性是静态常量(默认加public static final …..),它的方法是抽象方法(默认public abstract ……)
3、实现类必须实现接口的所有方法,除实现类也是抽象类。
4、实现类可以有多个接口
5、接口没有构造方法
接口和抽象类的区别
1、抽象类可以有构造方法,接口中不能有构造方法。(两个都不能直接实例化)
2、抽象类中可以有普通成员变量,接口中没有普通成员变量。它是静态常量
3、抽象类中可以包含非抽象的普通方法,不能有非抽象的普通方法(jdk1.8及以上就可以有普通方法,但必须加default关键字修饰)。
4、抽象类中的抽象方法的访问类型可以是 public,protected ,但接口抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
5、抽象类中可以包含静态方法,接口中不能包含静态方法(jdk1.8+能行)
6、抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类型。
7、一个类可以实现多个接口,但只能继承一个抽象类。
代码测试
1、接口不能实例化
2.可以通过匿名内部类的方式间接实例化对象,并对实现接口中规定的方法。
3.接口的属性默认为public static final,其方法默认为public abstract
4.普通类实现接口必须实现接口中的方法,抽象类实现接口可以不实现接口中的方法
4.一个类可以继承多个接口。
5.接口没有构造函数。
6.接口中不能有静态方法,(但是jdk1.8中,接口可以有静态方法)
7.接口中不能有普通方法,但是(jdk1.8中,接口可以有普通方法,但是必须使用default关键字声明)
8.接口中的方法必须为public