接口
一,接口概念
1,接口是功能的集合,看作是一种引用数据类型,比抽象类更加抽象的“类”。
2,接口只描述所应具备的方法,而没有具体实现。
二,接口定义
1,定义接口: 权限修饰符 interface 接口名
2,定义方法: public abstract 返回值类型 方法名(参数列表)
3,定义变量: public static final 数据类型 变量名 = 值
public interface MyInterface{
public static final int a = 4;//定义变量
public abstract void function();//定义方法
}
三,类实现接口
类与接口的关系为实现关系,即类实现接口,关键字是implements,类似于继承。
类 实现 接口
| | |
public class MyInterfaceImpl implements MyInterface
四,接口成员特点
固定格式:
public static final 数据类型 变量名 = 值
在接口定义中,public static final 修饰符可以省略不写,虽不显示但仍然存在。
五,接口方法特点
格式:
public static 返回值类型 方法名(参数列表)
public static 可以省略不写。子类必须覆盖掉接口中所有抽象方法后,子类才能实例化。
六,接口的多实现
为了实现继承中没有的多继承功能,便有了接口中的多实现来完成。其中多实现相比较于继承没有安全隐患问题,主要的原因在于接口中的方法全部都是抽象的,没有主体。
public interface A{
public abstract void a();
}
public interface B{
public abstract void b();
}
public class implements A,B{
public void a(){};
public void b(){};
}
七,继承类同时实现接口
子类继承一个父类扩展功能,再通过接口实现扩展更多的功能,接口的出现避免了单继承的局限性。父类中定义的是事物的基本功能,接口中定义的是事物的扩展功能。
class Fu{
public viod show(){}
}
interface Inter{
public abstract viod show1();
}
class Zi extends Fu implements Inter{
public viod show1();
}
八,接口的多继承
接口与接口之间存在继承关系,并且可以继承多个接口。
public interface A{
public abstract viod a();
public abstract viod b();
}
public interface C extends A,B{
public abstract viod c();
}
public class D implements C{
public viod a(){};
public viod b(){};
public viod c(){};
}
九,接口与抽象的区别
相同点:
1, 两者都位于继承的顶端,用于被其他类继承或实现。
2,两者都不能直接实例化对象
3, 两者都具有抽象方法,其子类都必须覆盖掉这些抽象方法。
不同点:
1,抽象类是某个事物应该具备的内容,接口是这个事物的额外内容。
2, 抽象类为部分方法提供实现,接口只能包含抽象方法。
3, 一个类可以继承一个直接父类,但可以实现多个接口。