什么是接口?
接口可以看做特殊的抽象类,即只包含抽象方法和常量的变量。
用interface修饰
接口的定义
[修饰符] interface 接口名 extends 父接口1, 父接口2……{
零到多个常量定义……
零到多个抽象方法定义……
零到多个内部类、接口、枚举定义……
零到多个默认方法或类方法定义……
}
例如:
public interface InterfaceName{
......
}
注意:
1.修饰符只能是public或者省略,如果省略则只能在同包下访问接口
2.接口的命名和类命名规则一样
3.接口中的方法全都是抽象方法,没有方法体(默认abstract修饰)
4.类可以实现多个接口
5.一个接口可以继承多个接口,接口直接是多继承关系
6.接口中的成员变量全都是常量,没有构造方法
7.接口只能继承接口,接口与其具体的实现类之间存在多态性
类与接口的继承
一个类只可以继承一个父类,可实现多个接口,一个接口可以继承多个父接口。
接口的使用
接口不能用于创建实例,但可以用于声明引用类型变量。
也可用于进行强制类型转换
实现类必须实现接口的所有方法
抽象类 (用abstract修饰的类)
抽象类只能单继承,而接口(interface)可以多实现
抽象类继承用extends,而接口用implements
抽象类可以有构造,接口不能
抽象类可以有一般的属性,接口中的属性只能是静态常量
抽象类中可以有抽象方法,也可以有一般的方法,而接口中只能有抽象方法
抽象类中抽象方法可以被除private以外的修饰符修饰,但是接口中只能是public
接口与抽象类的区别
共同点:
接口和抽象类都不能被实例化,它们都位于继承的顶端,用于被其他类实现和继承;
接口和抽象类都可以包含抽象方法,实现接口或继承提象类的普通子类都必须实现这些抽象方法。
不同点:
1.接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现;抽象类则完全可以包含普通方法。
2.接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,也可以定义静态常量。
3.接口里不包含构造方法;抽象类里可以包含构造方法,抽象类里的构造方法并不是用于创建对象,而是让其子类调用这些构 造方法来完成属于抽象类的初始化操作。
4.接口里不能包含初始化块;但抽象类则完全可以包含初始化块。
5.一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补java单继承的不足。
类的继承与接口的实现
接口与接口之间用 extends
接口与类之间用 implements
类与类之间用 extends
评论 (0)