第八章.抽象类、接口_第1页
第八章.抽象类、接口_第2页
第八章.抽象类、接口_第3页
第八章.抽象类、接口_第4页
第八章.抽象类、接口_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

抽象类、接口NIIT培训铸就辉煌IT人生目标:抽象类接口内部类枚举类型抽象类在定义Java方法时可以只给出方法头,而不必给出方法体、即方法实现的细节,这样的方法被称为抽象方法。抽象方法必须使用关键字abstract修饰,包含抽象方法的类必须声明为抽象类。Java语言规定,子类必须实现其父类中的所有抽象方法,否则该子类也只能声明为抽象类。抽象类不能被实例化抽象类主要是通过继承、再由其子类发挥作用的,其作用包括两方面:代码重用规划其他特性:抽象类中可以不包含抽象方法;子类中可以不全部实现抽象父类中的抽象方法,但此时子类也只能声明为抽象类;父类不是抽象类,但在子类中可以添加抽象方法,但子类需声明为抽象类;抽象类中可以声明static属性和方法;为什么使用接口只有抽象方法的抽象类?可以用接口来表示接口有比抽象类更好的特性:1.可以被多继承2.设计和实现完全分离3.更自然的使用多态4.更容易搭建程序框架5.更容易更换实现

……

用接口代替这样的抽象类,是因为:什么是接口认识一下接口必须知道的接口特性接口不可以被实例化实现类必须实现接口的所有方法实现类可以实现多个接口接口中的变量都是静态常量publicinterfaceMyInterface

{publicvoidfoo();//其他方法}所有方法都是:publicabstract抽象类除外Java中的多继承常作为类型使用如何使用接口用程序描述USB接口如何使用接口可以使用Java接口来实现

USB接口本身没有实现任何功能

USB接口规定了数据传输的要求

USB接口可以被多种USB设备实现编写USB接口实现USB接口使用USB接口根据需求设计方法实现所有方法用多态的方式使用如何使用接口编码实现publicclassUDiskimplementsUsbInterface{publicvoidservice(){System.out.println("连接USB口,开始传输数据。");}}publicinterfaceUsbInterface{/***USB接口提供服务。*/voidservice();}UsbInterfaceuDisk=newUDisk();uDisk.service();编写接口实现接口使用接口实现接口使用的关键字用接口实现多态多个接口使用“,”分隔面向接口编程开发打印机墨盒:彩色、黑白纸张类型:A4、B5墨盒和纸张都不是打印机厂商提供的打印机厂商要兼容市场上的墨盒、纸张面向接口编程用面向接口编程的方式开发制定墨盒、纸张的约定或标准打印机厂商使用墨盒、纸张的标准开发打印机其他厂商按照墨盒、纸张的标准生产墨盒、纸张定义墨盒接口InkBox定义纸张接口Paper定义打印机类实现墨盒接口实现纸张接口约定墨盒标准约定纸张标准用墨盒、纸张接口实现打印方法墨盒和纸张的规格是一种约定打印机需要遵守这些约定面向接口编程publicinterfacePaper{

/**

*得到纸张大小

*@return纸张大小

*/

publicStringgetSize();}纸张的实现publicinterfaceInkBox{

/**

*得到墨盒颜色

*@return墨盒颜色

*/

publicString

getColor();}墨盒的实现嵌套类Java语言支持类的嵌套定义,即允许将一个类定义在其他类的内部,其中内层的类被称为嵌套类(NestedClass)。嵌套类可以分为两种:静态嵌套类(StaticNestedClass):使用static修饰的嵌套类;内部类(InnerClass):非static的嵌套类。publicclassA{…privateclassB{//内部类

…}publicstaticclassC{//静态嵌套类

…}}内部类内部类又可分为三种情况:1.普通的内部类:在Java类中、方法或语句块的外部定义的非static类。2.局部内部类:也称局部类(LocalClass),定义在方法或语句块中的类。3.匿名内部类:也称匿名类(AnonymousClass),定义在方法或语句块中,该类没有名字、只能在其所在之处使用一次。内部类内部类与其所在的外层类之间存在着逻辑上的依赖关系——内部类的对象不能单独存在,它必须依赖一个其外层类的对象;在内部类中可以直接访问其外层类中的成员、包括属性和方法,即使这些属性和方法是private的。内部类可以声明为抽象类,因此可以被其它的内部类继承。也可以声明为final的。和外层类不同,内部类可以声明为private或protected。使用内部类(1)publicclassA{privateints;publicclassB{publicvoidmb(){s=100;//p3System.out.println("在内部类B中s="+s);}}publicvoidma(){Bi=newB();//p2i.mb();}}publicclassTestInner{publicstaticvoidmain(Stringargs[]){Ao=newA();//p1o.ma();}}使用内部类(2)使用内部类(3)在外部使用其他类中的内部类时,应指明其完整层次,并显式建立对象间的依赖关系。publicclassA{privateints;publicclassB{publicvoidmb(){ System.out.println(s);}}}publicclassTestInner2{publicstaticvoidmain(String[]args){Aa=newA();//创建一个依赖于a而存在的bA.Bb=a.newB();b.mb();}}使用内部类(4)内部类中出现变量命名冲突时,可以使用内部类对象的特殊属性"<外层类名>.this"来访问其所依赖外层类对象的成员。classA{privateints=111;publicclassB{privateints=222;publicvoidmb(ints){System.out.println(s);//局部变量sSystem.out.println(this.s);//内部类对象的属性sSystem.out.println(A.this.s);//外层类对象属性s}}}publicclassTestInner3{publicstaticvoidmain(Stringargs[]){Aa=newA();A.Bb=a.newB();b.mb(333);}}枚举类型JavaSE5.0开始,Java语言引入了一种新的引用数据结构——枚举(Enum)。Java语言中枚举类型均自动继承了java.lang.Enum类(该类继承了Objec类)。枚举类型使用一组常量值来表示特定的数据集合,该集合中数据的数目确定(通常较少),且这些数据只能取预先定义的值publicenumWeek{ MON,TUE,WED,THU,FRI,SAT,SUN}publicclassTestEnum{publicstaticvoidmain(String[]args){TestEnumte=newTestEnum();te.work(Week.SUN);}publicvoidwork(Weekday){if(day.equals(Week.SAT)){ System.out.println("购物!");}elseif(day.equals(Week.SUN)){ System.out.println("祈祷!");}else{ System.out.println("工作!");}}}组合使用枚举类型与switch语句publicclassTestEnumInSwitch{publicstaticvoidmain(String[]args){TestEnumInSwitchteis=newTestEnumInSwitch();teis.work(Week.FRI);}publicvoidwork(Weekday){switch(day){caseMON:caseTUE:caseWED:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论