接口
概述:规则 协议 规定
协议:协定、插座、usb插口、语言
接口的定义:
interface 接口名{
}
接口中的限定的内容:
方法的声明相关:返回值类型 方法名 参数列表;
接口中定义的方法都是抽象方法,没有具体的方法实现,也就是没有方法体
接口需要被具体的类实现,那么这个类就是接口的实现类。
实现类的格式:implements 接口名
对接口的实现,如果要实现其中的方法,就是对方法的重写
接口的特点:
1、实例化:接口不能用于创建对象,因为接口只用于定义规则,所以不需要被实例化
2、对接口的实现:当对接口进行实现后就需要实现类重写接口的方法,即使在接口中定义一个非抽象的方法,系统会默认给你定义的非抽象方法加上public abstract,接口中的方法都是抽象方法
3、实现类的前途:
(1)如果没有完全重写接口中的方法,那么这个类就必须是一个抽象类,不能去创建对象
(2)如果完全重写了接口的方法,就是一个普通类,可以创建对象
4、实现类在创建对象时要使用接口的引用指向实现类的对象,这样可以实现扩展性的优势,也实现了调用者和实现者的分离,双方都去面向接口
接口中成员的特点:
成员变量:接口中不能定义变量,因为接口不能创建对象,不会再堆内存中分配空间,即使可以定义也没有意义,如果再接口中定义了一个变量就会直接加上final的修饰变成常量
成员方法:接口中的成员方法只能定义抽象的成员方法会自动加上abstract的修饰
构造方法:接口中不能定义构造方法 因为没有需要赋值的成员。也不可以去创建对象。
类与类 类与接口 接口与接口直接的关系
类与类:
关系:继承
关键字:extends
当一个类继承类另外一个类,此时两个类就出现了子父类的关系;java中类的继承只能是单继承
类与接口
关系:实现
关键字:implement
实现类需要对接口的方法进行重写,也就是对接口的实现
接口是可以被多实现,不会出现安全隐患。
注意事项:当两个接口中的两个相同的抽象方法出现之后,返回值不同也会存在二义性,是接口本身的矛盾,这种情况也不能多实现
接口与接口之间
关系:继承
关键字:extends
接口可以多继承,也可以单继承,可以实现继承的嵌套
一个实现类可以去继承一个类,同时也可以实现多个接口
注意事项:接口和接口本身之间不能出现矛盾,接口和类之间不能出现矛盾
类和接口的选择:
总体原则:即使所有的方法都是抽象方法,但是这些功能都是这个主题的核心功能,那么这个主体最好声明成类
有些功能可有可无,或者能够被其他的主体所使用,那么这些功能就希望被定义再接口中
匿名内部类
含义:就是没有名称的内部类,跟普通的有名称的内部类对应
前提:匿名内部类必须要借助于父类或者接口去定义
定义格式: new 父类名(接口名){
}
注意事项:1、需要new父类或者接口的结构来声明匿名内部类;2、可以去创建对象,但是这个对象没有自身的引用,只能去指向父类或者接口的成员,也就无法调用自身的成员;3、编译阶段会给这个匿名内部类一个名称,也会给匿名内部类一个数字,这个数字就是它的编号