导航
1.接口语法与注意事项
2.接口支持多重继承
3.类调用接口的语法
4.接口也是一种类,也可以产生对象,接口的多态性
5.适配器类
6.抽象类定义与用法
——————————————————————————————————————
1.接口语法与注意事项
接口的语法:
[abstract] interface 接口名 { [public][abstract] 返回类型 方法名(参1,参2) }
注意:
1.没有方法体,static方法也不能用,默认是public 和 abstract
2.接口中无成员变量,无构造器,不能用接口创建对象
3.接口中的所有方法都是抽像方法,默认也是abstract
2.接口支持多重继承
[abstract] interface 接口名 extends 接口1,接口2{ }
3.类调用接口的语法
class 类名 implements 接口1,接口2{ }
注意点:
1.类中必须实现接口中的所有方法,否则就会有编译错误
2.继承后方法的访问修饰符必须强于父类中的方法修饰符,并且继承类必须使用public修饰
例子:
//接口 interface IBiz{ void change(); boolean withdraw(double amount); } //父类 class ClsA{ } //插入接口实现,不影响父类 class clsB extends ClsA implements IBiz{ public void change(){ } public boolean withdraw(double amount){ } }
例子来看,类调用接口时必须将接口中功能都实现
若想选取部分功能实现,就要使用抽象类 往下看把
应当有契约性与稳定性
4.接口也是一种类,也可以产生对象,接口的多态性
但是只能使用自己接口中的方法,其他父类与接口方法隐藏
举例:(能够产生对象)
class clsA implements IBiz,IDao{ } IBiz obiz = new clsA(); //只能调用自己接口的方法
举例:接口的多态性
接口 interface IBiz{ void charge(); } class ClsA implements IBiz{ public void change(){ 对应实现的方法 } } class ClsB implements IBiz{ public void change(){ 对应实现的方法 } } class ClsCall{ static public void call(IBiz biz){ //传的是接口的参数 biz.charge(); //biz只能使用自己接口中的功能 } }
改变不同的实现,不影响ClsCall
接着进行调用上面的
IBiz obiz = new ClsA(); ClsCall.call(obiz);
charge调用结果根据AB两个都不同
5.适配器类
方法作用:
1.实现接口,并对接口中的接口方法提供空实现
2.空实现就是有方法体,但方法体中不提供有效的代码
举例子:
接口 interface IBiz{ void charge(); boolean withdraw(double amount) } 适配器 class BizAdapter implements IBiz{ public void charge(){} public boolean withdraw(double amount){ return false; } } class Bizlmpl extends BizAdapter{ public void charge(){ 实现 } }
使用适配器有什么好处呢?
创建一个类并且继承这个继承器,就可以使用其中的方法了,可以随意调用几个方法。
6.抽象类定义与用法
介于接口与类之间的概念
1.使用abstract修饰,并且其中的方法也要使用abstract修饰
2.可以有构造器,但是不能在new后使用抽象类构造器,也就是说抽象类不能创建对象
最主要就是使用抽象类调用接口时,就不需要实现所有接口的方法
举例子:
接口 interface IBiz{ void charge(); boolean withdraw(double amount); } 抽象类 abstract class ClsA implements IBiz{ public boolean withdraw(double amount){ } }
抽象方法与其他成员方法与变量有关联,使用抽象类否则使用接口