Java接口
1.定义
1.规范:public interface 接口名
注意:public也可省略,但是只是在同一包下起作用,这样声明接口似乎违背了接口创建的意义,即不能被其他任意位置类实现,因此不建议省略public
2.方法
1.规范:public abstract 返回类型 方法名([参数]);
2.简写:返回类型 方法名([参数]);
注意:
1.jdk1.8版本中方法也可用static修饰,但是此方法必须有方法体,不能被abstrct修饰,实现类不能重写和继承此static方法,只能此接口调用该static方法
2.jdk1.8版本接口中方法也可用default修饰(不是省略,是显式用default修饰),必须有方法体,实现类会继承此方法,也可重写此方法
引入default修饰原因:
1)为接口添加default方法,不会破坏原有的接口的实现
2)以前的版本给接口添加新方法会影响已有的实现,因此加入default
3.属性
1.规范:public static final 变量类型 变量=值;
2.简写:变量类型 变量=值;
注意:
1.public:使接口实现类可以使用这个变量
2.static:接口不能被实例化,没有构造方法,故而没有实例变量,只有static变量,它在类(接口)被加载时就会被创建,它是属于类(接口)的,如果不被static修饰,那么它便属于对象,而接口不能创建对象
3.final:接口中不可以定义变量,上面说的变量只是习惯性的叫法,其实它是常量,一开始必须赋初值,不能被修改,如果不是final修饰,那么它可以被实现类修改,这样接口创建这个常量便没有意义了
4.接口和抽象类
1.相同点:
1.接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承
2.可以将抽象类和接口类型作为引用类型
3.接口和抽象类都包含抽象方法
4.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类
2.不同点:
1.一个类可以实现多个接口,一个类只能继承一个抽象类;
2.接口中不能定义构造器,抽象类中可以定义构造器;抽象类的构造器不是用来创建对象,而是让其子类调用完成抽象类的初始化操作;
3.接口中的方法全部都是抽象方法(jdk1.8前),抽象类中可以有抽象方法和具体方法;
4.接口中的成员全都是public 的,抽象类中的成员可以是 private、默认、protected、public;
5.接口中定义的成员变量实际上都是常量,抽象类中可以定义成员变量;
6.接口中不能有静态方法,抽象类中可以包含静态方法;(注意:JDK1.8之后接口中可以有静态方法)
版权声明:本文为qq_40911298原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。