欢迎来到天天文库
浏览记录
ID:18022244
大小:336.00 KB
页数:40页
时间:2018-09-12
《java程序设计教学课件-第六章接口和包》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章接口和包华中科技大学IBM技术中心主要内容提要创建和使用包编写和使用接口Java接口的引入Java语言只支持单重继承,它的程序中的类的层次结构是树状结构,在处理复杂问题时单重继承显得力不从心。为了使Java程序的类层次结构更加合理,更符合实际问题的需要,我们把用于完成特定功能的若干属性组织成相对独立的属性集合,这种属性的集合就是接口。Java接口定义定义:接口是一个有名称的方法定义和常量定义的集合,但没有方法的实现。接口定义了一个行为协议,类层次结构中任何地方的任何类都可以实现.接口是由常量和抽象方法组成的特殊类:接口中的属性都是用final修饰的常量接口中
2、的方法都是用abstract修饰的没有方法体的抽象方法。Java语言的接口接口功能的真正实现是由实现接口的各个类来定义接口中各个抽象方法的具体方法体。Java语言通过接口实现了类间的多重继承功能。Java接口实现多重继承单一继承指明了子类和父类的层次关系和各自的行为。多重继承是指一个类有多个父类,这使得类的层次关系不清楚。接口则把方法的定义同类的层次区分开来,通过接口可以在运行中动态地定位所调用的方法,同时一个类可以实现多个接口,使得接口提供了比多重继承更简单、更灵活的功能。接口vs抽象类接口不可以实现任何方法,而抽象类可以;类可以实现多个接口,但父类仅只有一个;
3、接口和继承无关,不是类层次结构的一部分。无关的类可以实现相同接口。定义接口完整的接口定义规范接口定义接口包括接口声明和接口体两部分:[public]interface接口名[extends父接口名列表]{[public][static][final]类型变量名=常量值;[public][abstract][native]返回值类型方法名(参数列表)[throws异常列表];}publicinterfaceMyInterface{intMAXSIZE=1024;publicabstractmyMethod(Stringname);}接口定义的说明声明接口的关键字in
4、terface引导着所定义的接口名字(符合Java标识符规定);声明接口也需要给出访问控制符;接口具有继承性,通过关键字extends声明该新接口是某父接口的派生接口;一个接口可以有多个父接口,它们之间用逗号分隔,形成父接口列表。接口体的说明接口体的定义有两个部分:对接口中属性的声明对接口中方法的声明;系统默认:接口中的所有属性都是public,static和final(公共,静态和最终);系统默认:接口中的所有方法都是public和abstract(公共和抽象);接口中方法的方法体可用Java语言书写,也可用其它语言书写(加native修饰)。实例定义一个股票监
5、视器。一旦股票价格变化,立即通知观察者watcher。Watcher是一个接口,它只有一个方法,valueChanged知道股票变化的类必须实现此方法。从而必须实现StockWatcher接口不仅仅是StockMointer的超类,其它类只要实现此接口,就可以享受股票价格变化通知服务。publicclassStockMonitor{publicvoidwatchStock(StockWatcherwatcher,StringtickerSymbol,doubledelta){}}实现接口具体地实现接口所规定的功能,需要某个类为接口中的所有抽象方法编写实在的方法体。
6、在类的声明(定义)中用implements关键字说明该类将要实现哪些接口;如果实现某个接口的类不是abstract的抽象类,则在类的定义部分必须为所有抽象方法定义具体方法体,方法头部分应该与接口中的定义完全一致;实现接口如果实现某接口的类是abstract的抽象类,则在类的定义部分可以不具体实现接口中的所有方法;一个类在实现某个接口的抽象方法时,必须使用完全相同的方法声明。接口的抽象方法访问修饰符为public,所以,类在实现方法时必须使用修饰符public,否则,系统将警告;因为缩小了接口中定义的方法的访问控制范围。实例publicclassStockApple
7、textendsAppletimplementsStockWatcher{...publicvoidvalueChanged(StringtickerSymbol,doublenewValue){if(tickerSymbol.equals(sunTicker)){...}elseif(tickerSymbol.equals(oracleTicker)){...}elseif(tickerSymbol.equals(ciscoTicker)){...}}}接口功能不能简单扩大例如:要加个报股价的方法在接口里,此时所有实现它的类不能正常工作。publicinterf
8、aceSt
此文档下载收益归作者所有