第6章接口与多态.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第6章接口与多态.ppt》由会员分享,可在线阅读,更多相关《第6章接口与多态.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章接口与多态 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望主要内容主要内容 接口接口 接口回调接口回调 面向接口编程面向接口编程难点难点 面向接口编程面向接口编程导学导学JavaJava不支持多继承性不支持多继承性,即一个类只能有一个父类。,即一个类只能有一个父类。单继承性使得单继承性使得JavaJava简单,易于管理和维护。简单,易于管理和维护。JavaJava的的接口更加符合人的思维方式接口更加符合人的思维方式6.1 6.1 接接 口口使用关键字使用关键
2、字interfaceinterface来定义一个接口。接口的定义来定义一个接口。接口的定义和类的定义很相似,分为和类的定义很相似,分为接口的声明接口的声明和和接口体接口体。6.1.1 6.1.1 接口的声明与使用接口的声明与使用接口通过使用关键字接口通过使用关键字interfaceinterface来声明,格式:来声明,格式:interfaceinterface 接口的名字接口的名字 1 1接口声明接口声明接口是一组接口是一组常量常量和和抽象方法抽象方法的集合。的集合。(1)(1)接口的访问权限是接口的访问权限是publicpublic或或缺省缺省权限。权限。(2)(2)接口中成员变量声明格式
3、如下:接口中成员变量声明格式如下:public static finalpublic static final 成员变量名成员变量名=常量常量接口中成员方法声明格式如下:接口中成员方法声明格式如下:public abstractpublic abstract 返回值类型返回值类型 成员方法名(参成员方法名(参 数表)数表)注意:接口中成员变量和成员方法的格式是固定的,注意:接口中成员变量和成员方法的格式是固定的,故可以省略。故可以省略。2接口体举例举例i interface Printable nterface Printable public public static static fin
4、al int final int MAX=100;MAX=100;public abstract void add();public abstract void add();public abstract float(float x,public abstract float(float x,float y);float y);接口的接口的示例示例public interface Shape1public interface Shape1 public static final PI=3.14;public static final PI=3.14;public public abstract
5、abstract double area();double area();public public abstractabstract double volume(double double volume(double x);x);public public abstractabstract void show();void show();接口的特点接口的特点(1)(1)接口可以定义多重继承接口可以定义多重继承(2)(2)接口不存在最高层,而接口不存在最高层,而JavaJava中类的最高层是中类的最高层是ObjectObject类。类。(3)(3)接口中的方法只能被声明为接口中的方法只能被声明
6、为public abstractpublic abstract 接口中成员变量只能用接口中成员变量只能用public static final public static final 来来声明。声明。(4)(4)接口中的方法接口中的方法不能定义方法体不能定义方法体。在在JavaJava语言中,语言中,接口由类去实现以便使用接口由类去实现以便使用接口中的方法接口中的方法。一个类可以实现多个接口一个类可以实现多个接口,类通过使用关键字类通过使用关键字implementsimplements声明自己实声明自己实现一个或多个接口。如果实现多个接口,现一个或多个接口。如果实现多个接口,则用逗号隔开接口名
7、则用逗号隔开接口名如:如:class A class A implementsimplements Printable,AddablePrintable,Addable3 3接口的使用接口的使用重要性质重要性质如果一个类实现了接口,那么这个类必须如果一个类实现了接口,那么这个类必须重写该接口的所有方法重写该接口的所有方法重写接口的方法时,接口中的方法一定是重写接口的方法时,接口中的方法一定是public abstract public abstract 方法,所以类在重写接方法,所以类在重写接口方法时不仅要去掉口方法时不仅要去掉abstract abstract 修饰,修饰,给出给出方法体,而
8、且方法的访问权限一定要用方法体,而且方法的访问权限一定要用public public 来修饰。来修饰。例例6-16-1public public interfaceinterface Computable Computable int MAX=100;int MAX=100;int f(int x);int f(int x);public class public class ChinaChina implementsimplements ComputableComputable /China /China类实现类实现ComputableComputable接口接口 int number;in
9、t number;public int f(int x)/public int f(int x)/不要忘记不要忘记publicpublic关键字关键字 int sum=0;int sum=0;for(int i=1;i=x;i+)for(int i=1;i=x;i+)sum=sum+i;sum=sum+i;return sum;return sum;public class public class JapanJapan implementsimplements ComputableComputable /Japan /Japan类实现类实现ComputableComputable接口接口 i
10、nt number;int number;public int f(int x)public int f(int x)return 46+x;return 46+x;public class public class Example6_1Example6_1 public static void main(String args)public static void main(String args)China zhang;China zhang;Japan henlu;Japan henlu;zhang=new China();zhang=new China();henlu=new Japa
11、n();henlu=new Japan();zhang.number=28+Computable.MAX;zhang.number=28+Computable.MAX;henlu.number=14+Computable.MAX;henlu.number=14+Computable.MAX;System.out.println(zhang System.out.println(zhang的学号的学号+zhang.number+,zhang+zhang.number+,zhang求和结果求和结果+zhang.f(100);+zhang.f(100);System.out.println(henl
12、u System.out.println(henlu的学号的学号+henlu.number+,henlu+henlu.number+,henlu求和结果求和结果+henlu.f(100);+henlu.f(100);说明说明(1 1)如果父类实现了某接口,那么子类也就实现了该接)如果父类实现了某接口,那么子类也就实现了该接口,子类不必显式地使用关键字口,子类不必显式地使用关键字implementsimplements声明实现了声明实现了接口接口(2 2)接口声明时,关键字)接口声明时,关键字interfaceinterface前可加前可加publicpublic(3 3)如果一个类声明实现了一
13、个接口,但没有重写接口)如果一个类声明实现了一个接口,但没有重写接口中的所有方法,中的所有方法,那么这个类必须是那么这个类必须是abstractabstract类类interface interface ComputableComputable final int MAX=100;final int MAX=100;void speak(String s);void speak(String s);int f(int x);int f(int x);float g(float x,float y);float g(float x,float y);abstractabstract class
14、A class A implementsimplements ComutableComutable public int f(int x)public int f(int x)int sum=0;int sum=0;for(int i=1;i=x;i+)for(int i=1;i=x;i+)sum+=i;sum+=i;return sum;return sum;6.1.2 6.1.2 理解接口理解接口接口可以增加很多类都需要的功能,不同类可以实接口可以增加很多类都需要的功能,不同类可以实现相同的接口,同一个类也可以实现多个接口。现相同的接口,同一个类也可以实现多个接口。接口提供了方法声明与实现
15、相分离的机制,使实现接接口提供了方法声明与实现相分离的机制,使实现接口的多个类表现出相同的行为模式。口的多个类表现出相同的行为模式。当一个类不希望通过继承使得自己具有某个方法时,当一个类不希望通过继承使得自己具有某个方法时,就可以考虑去实现接口而不是把自己声明为某个类就可以考虑去实现接口而不是把自己声明为某个类的子类。的子类。例例6-26-2见教材6.1.3 6.1.3 接口的接口的UMLUML图图顶部是名字层,接口名必须是斜体,而且需要用顶部是名字层,接口名必须是斜体,而且需要用第二层是常量层第二层是常量层第三层是方法层第三层是方法层6.2 6.2 接口回调(接口回调(重点重点)6.2.1
16、6.2.1 接口变量与回调机制接口变量与回调机制6.2.2 6.2.2 接口的多态性接口的多态性6.2.3 abstract 6.2.3 abstract 类与接口的区别类与接口的区别6.2.1 6.2.1 接口变量与回调机制接口变量与回调机制接口是一种数据类型,用接口声明的变量称为接口接口是一种数据类型,用接口声明的变量称为接口变量变量接口变量中可以存放实现接口的类的实例的引用。接口变量中可以存放实现接口的类的实例的引用。接口回调?接口回调?可以把实现某一接口的类创建的对象的引用赋给该可以把实现某一接口的类创建的对象的引用赋给该接口声明的变量中,那么接口声明的变量中,那么该接口变量就可以该接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 接口
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内