java面向对象之接口
接口概念
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的特点
就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。
接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类)
一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。
为什么要用接口
接口被用来描述一种抽象。
因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
接口也被用来实现解耦。
接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。
接口的语法实现
为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。
接口的使用介绍:
java接口是抽象方法的集合,使用interface来进行编程。java接口编程就是通过定义一系列抽象方法,然后可以自定义实现类,来实现接口抽象方法,通过接口可以隐藏内部实现过程
-
如何声明一个java接口?声明一个java接口需要使用关键字interface来进行修饰,使用开发工具创建能够自动创建添加关键字
-
接口能够继承多少个接口?接口可以继承多个接口,但是java类只能继承一个父类,属于单继承模式
-
接口里面可以定义变量,但是一定是可以公开访问的静态常量
-
接口里面可以定义方法,普通方法被编译器被编译之后都是抽象方法,默认添加
abstract关键字
-
接口里面可以定义静态方法,静态方法可以有方法体,静态方法属于类级别方法,可以直接通过类来调用
-
实现接口方法需要使用implements关键字
代码如下:
public interface Smoking { // 抽象方法 public abstract 返回值类型 方法名(参数列表) // 成员变量的特点 public static final 变量名=变量值; // 静态常量(一旦赋值,不能改变) // interface a{} // inteface b{} public static final int a=1; public abstract void smoke(); }
public class Student implements Smoking { public void smoke() { System.out.println("学生抽烟"); } }
public class demo01 { public static void main(String[] args) { Student s=new Student(); s.smoke(); System.out.println(s.a); System.out.println(Smoking.a); } }
输出结果为: