资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第6章 接口与多态,第6章 接口与多态,1,6.1 接口,Java中的接口就是定义了若干个抽象方法和常量,形成一个属性集合,该属性集合通常对应某一组功能,可以实现类似于类的多重继承功能。其格式为:,6.1 接口Java中的接口就是定义了若干个抽象方法和常,2,6.11接口的声明与使用,6.11接口的声明与使用,3,1.接口声明,public interface 接口名extends 父接口名列表,/接口体,/常量声明,/抽象方法声明,1.接口声明public interface 接口名e,4,2.接口体,接口体中包含常量的声明和方法定义两部分。,2.接口体接口体中包含常量的声明和方法定义两部分。,5,接口声明时的注意事项,在Java中接口是一种专门的类型,用interface关键字定义接口。,接口中只能定义抽象方法,而且访问权限一定是公有的,在定义时可省略public和abstract修饰符。,接口中可以定义变量,但实际上是public final修饰的常量。,接口中不能定义静态方法。,接口声明时的注意事项在Java中接口是一种专门的类型,用in,6,3.接口的使用,在Java语言中,接口由类去实现以便使用接口中的方法,一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果实现多个接口,则用逗号隔开接口名。,如果一个类实现了某个接口,那么这个类必须重写该接口的所有方法。需要注意的是,重写接口的方法时,接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰、给出方法体,而且方法访问权限一定要,显式地用public来修饰,。,3.接口的使用在Java语言中,接口由类去实现以便使用接口中,7,类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口名直接调用。,接口声明时,如果关键字interface前加下public,就称这样的接口是一个public接口。public接口可以被任何一个类实现。如果一个接口不加public修饰,就是友好接口,只能被同一包中的类实现。,类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量,8,如果实现了某个接口,那么子类也就自然实现了该接口,子类不必于地使用关键字implements声明实现这个接口。,如果一个类声明实现一个接口,但没有重写串的所有方法,那么这个类必须是abstract类。,如果实现了某个接口,那么子类也就自然实现了该接口,子类不必于,9,例:接口的使用,interface computable,int MAX=100;,int f(int x);,例:接口的使用interface computable,10,class china implements computable,int number;,public int f(int x),return x+43;,class china implements computa,11,public class example6,public static void main(String args),china c=new china();,c.number=48+computable.MAX;,System.out.println(Chinese student:+c.f(4);,public class example6,12,接口的继承性,与类相仿,接口也具有继承性。定义一个接口时可以通过extends关键字声明该新接口是某个已经存在的父接口的派生接口,它将继承父接口的所有属性和方法。,与类的继承不同的是一个接口可以有一个以上父接口,它们之间用逗号分隔,形成父接口列表。新接口将继承所有父接口中属性和方法。,接口的继承性与类相仿,接口也具有继承性。定义一个接口时可以通,13,类实现接口的注意事项,在类的声明部分,用implements关键字声明该类将要实现哪些接口。,如果实现某接口的类不是abstract抽象类,则在类的定义部分必须实现指定接口所有抽象方法。,如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法。,一个类在实现某接口的抽象方法时,必须使用完全相同的方法名。,接口抽象访问限制符都已制定为public,所以类在实现方法时,必须显式地使用public修饰符。,类实现接口的注意事项在类的声明部分,用implements关,14,interface A,int a=1;,interface B,int b=2;,void pp();,interface A,15,interface MyInterface extends A,B,abstract class AbstractInterfaceExam implements A,B,public class InterfaceExam extends AbstractInterfaceExam/implements MyInterface/A,B,interface MyInterface extends,16,public class InterfaceExam extends AbstractInterfaceExam implements MyInterface A,B,public static void main(String args),InterfaceExam obj=new InterfaceExam();,System.out.println(继承接口A中的a=+obj.a);,obj.pp();,public void pp(),System.out.println(继承接口B中的b=+.b);,public class InterfaceExam ext,17,几点说明,制定模块与模块之间的通信协议,一个定义多人实现。,接口做方法的参数时,其实参要用它的实现类。,接口的数据成员都静态常量,通过接口名,实现类和对象都可以进行访问。访问时点运算符。,几点说明制定模块与模块之间的通信协议,一个定义多人实现。,18,.接口的回调,接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口方法。,.接口的回调接口回调是指:可以把实现某一接口的类创建的,19,interface ShowMessage,void ShowTrademark(String s);,interface ShowMessage,20,class TV implements ShowMessage,public void ShowTrademark(String s),System.out.println(s);,class TV implements ShowMessag,21,public class example63,public static void main(String args),ShowMessage sm;,sm=new TV();,sm.ShowTrademark(长虹牌电视机);,public class example63,22,6.2.2 接口的多态性,接口的多态性是不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在架设接口依法时就可能具有多种形态。,6.2.2 接口的多态性接口的多态性是不同的类在实现同一个接,23,6.2.3 接口与抽象类的比较,接口不能包含任何可以执行的方法,而抽象类可以。,接口中只可以有常量,不能有变量;而abstract类中可以有变量。,类可以实现多个接口,但只能有一个父类。,接口不是类分级结构的一部分,而没有联系的类可以执行相同的接口。,6.2.3 接口与抽象类的比较接口不能包含任何可以执行的方法,24,.面向接口编程,仍然使用开-闭原则进行程序设计,即对扩展开放,对修改关闭。具体步骤是:,问题的分析,设计接口,设计实现类,.面向接口编程仍然使用开-闭原则进行程序设计,即对扩展开,25,
展开阅读全文