接口相当于特殊的抽象类,定义方式、组成部分与抽象类类似。
interfacee MyInterface{
public static final String FIELD="value";
public abstract void method();
}
没有构造方法,不能创建对象,但是抽象类是可以创造对象的
只能定义:公开静态常量、公开抽象方法(不过一般不需要声明,他们自己会默认)
1.定义接口A//此时,这个接口,无法去new出来,那么需要后面工作
2.用一个C类implements 去实现接口 public class C implements A
3.A a1=new C(); 最后一步就可以创建个对象a1
接口和抽象类区别
相同:可编译成字节码文件。
不能创建对象。
可以作为引用类型。
具备Object类中所定义的方法。
接口特有内容:所有属性都是公开静态常量,隐式使用public static final修饰。
所有方法都是公开抽象方法,隐式使用public abstract修饰。
没有构造方法、动态代码块、静态代码块。
java是单继承,如果要实现多种能力,无法多继承,那么接口的 出现就解决了这一点
接口的定义:代表了某种能力。
方法的定义:能力的具体要求。
举个例子:把“飞”这个能力赋予“人”
值得一提的是,在接口中,是抽象的方法,那么默认abstract,不需要在里面把方法写清楚,因为抽象类存在的意义就是让子类去不断重写
接口flyable:写方法method,定义飞,不需要写,有个头部就行
类person:person去implements这个flyable接口
测试主类test:
主类就是两种,一种是用person p-=new person()来创建对象
第二张利用多态的方法,flyable f=new person()来创建对象,但是这样的声明方式,f这个对象只能用flyable这个接口里面的方法,如果同时继承了fire这个接口,无法使用fire里面的方法
常量接口:在这个接口里,只有常量
public interface ConstInterface{
String CONST1="aaa";
String CONST2="bbb";
String coNST3="ccc";
}
public class TestconstInterface{
public static void mai(string[] args){
if(ConstInterface. coNST1. equals("aaa")){
...........
}
}
标记接口:标记接口中没有包含任意成员,仅仅用作标记。
·Serializable(可序列化)·Cloneable(可克隆)
接口回调
定义了usb接口包含一个service抽象方法
分别定义三个类进行重写service:
upan,ufan,mouse
定义一个master类,用usb接口 定义三个对象u1 u2 u3(就是usb,没有具体指定哪个,你也不知道),一个run方法,里面分别u1.service()调用
主类test,new一个使用者master m,去把之前的三个u1 u2 u3指定类型
master m=new master();
usb mouse=new mouse();
usb upan=new upan();
usb ufan=new ufan();
m.u1=mouse;
m.u2=upan;
m.u3=ufan;
m.run();
总结:
什么是接口:微观:接口是一种能力和约定。
宏观:接口是一种标准。
接口与类的异同:没有构造方法,仅可定义公开静态常量与公开抽象方法。
接口的应用Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。
接口的规范任河类在实现接口时,必须实现接口中所有的抽象方法,
否则此类为抽象类。 实现接口中的抽象方法时,访问修饰符必须是public。
什么是常量接口将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理。
什么是接口回调先有接口的使用者,后有接口的实现者。