java大学教程ppt(new).ppt_第1页
java大学教程ppt(new).ppt_第2页
java大学教程ppt(new).ppt_第3页
java大学教程ppt(new).ppt_第4页
java大学教程ppt(new).ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1 JAVA语言程序设计 周敏彤zhoumintong 2 第六讲对象和类 续 对象的创建对象的使用对象的释放对象的访问 3 Quiz classPC publicstaticvoidmain String args Mousem newMouse inti m click System out println i i System out println Mouse si m i publicclassMouse inti intclick returni 4 第七讲对象和类 续 类的继承 extends 抽象类 abstractclass 静态变量的初始化接口 interface 5 类的继承 父类与子类的关系 extends 基本内容子类可继承父类的方法和变量 子类可增加父类中没有的方法和变量子类可重新定义父类的静态 实例变量子类可重新定义父类的静态 实例方法继承中的构造方法类成员访问修饰符与继承的关系 6 类的继承 子类可继承父类的方法和变量子类可增加父类中没有的方法和变量 classVehicle Stringbrand voidsetB Strings brand s voidshowB System out println brand classBusextendsVehicle intgas voidsetG intg gas g voidshowG System out println gas Busb newBus b setB audi b setG 100 b showB b showG 子类继承父类的方法和变量 则这些方法和变量就属于子类 则子类对象对这些方法和变量的调用是显而易见的 7 类的继承 子类可重新定义父类中已有的变量父类中同名的变量无效 隐藏 通过 super 变量名 和父类名 变量名 static变量 引用 classA inti 256 j 64 staticintk 32 finalfloate 2 718f classBextendsA publiccharj x finaldoublek 5 staticinte 321 voidshow System out println i j k e voidshowA System out println super j A k super e Bb newB b show b showA 256x5 032164322 718 this 变量名this 方法名this super 变量名super 方法名super super 当前对象 当前对象的父对象 其他 8 继承中的super对象 类的继承 父类 子类 调用父类的变量和方法 调用子类的变量和方法 9 继承中的构造方法 类的继承 publicclassCartoonextendsDrawing Cartoon System out println CartoonConstructor publicstaticvoidmain Stringargs Cartoonc newCartoon classArt Art System out println ArtConstructor classDrawingextendsArt Drawing System out println DrawingConstructor ArtConstructorDrawingConstructorCartoonConstructor 子类的构造方法必须调用父类的构造方法 classDrawingextendsArt Drawing System out println DrawingConstructor ArtConstructorCartoonConstructor publicclassCartoonextendsDrawing Cartoon super System out println CartoonConstructor publicstaticvoidmain Stringargs Cartoonc newCartoon 10 再谈继承中的构造方法 类的继承 publicclassChessextendsBoardGame Chess super System out println CartoonConstructor publicstaticvoidmain Stringargs Chessc newChess classGame Game System out println GameConstructor classBoardGameextendsGame BoardGame super System out println BoardGameConstructor 子类的构造方法必须要对父类的构造方法进行调用 不管以任何形式 否则编译出错super 方法必须是构造方法的第一句 11 再谈继承中的构造方法 类的继承 classA A inti classBextendsA B Strings B Strings super 12 类的继承 类成员访问修饰符与继承的关系 classPoint intx y privatePoint reset Point intx inty this x x this y y privatevoidreset this x 0 this y 0 classColoredPointextendsPoint intcolor voidclear reset classTest publicstaticvoidmain String args ColoredPointc newColoredPoint 0 0 c reset 有一个错误产生 因为ColoredPoint没有一个带两个int型参数的构造方法 而在main方法中要求通过调用这样一个构造方法创建对象 这表明ColoredPoint没有继承Point中的构造方法 第二个错误的产生是因为 ColoredPoint没有声明构造方法 因此一个默认的构造方法会被创建 这个构造方法相当于是定义为 ColoredPoint super 这意味着这个不带参数的构造方法调用了其直接父类Point的不带参数的构造方法 问题是类Point的不带参数的构造方法private的 因此它不能在类Point外被调用 还有两个错误会产生 因为类Point中的方法reset是private的 因此不能被ColoredPoint继承 13 类的继承 再谈子类对父类变量的继承 importpoints Point3d classPoint4dextendsPoint3d intw publicvoidmove intdx intdy intdz intdw x dx y dy z dz w dw packagepoints publicclassPoint intx y publicvoidmove intdx intdy x dx y dy packagepoints publicclassPoint3dextendsPoint intz publicvoidmove intdx intdy intdz x dx y dy z dz 目录结构 points Point class points Point3d class Point4d class importpoints Point3d classPoint4dextendsPoint3d intw publicvoidmove intdx intdy intdz intdw super move dx dy dz w dw 编译时报错 x y z仅在本包中才能访问 继承与类成员的访问修饰符有关 类成员访问修饰符与继承的关系私有的 private 类成员不能被子类继承公共的 public 和保护性的 protected 类成员能被子类继承 且子类和父类可以属于不同的包无修饰的父类成员 仅在本包中才能被子类继承构造方法不是类成员 所以不被继承 14 类的继承 packagepoints publicclassPoint publicintx y protectedintuseCount 0 staticprotectedinttotalUseCount 0 publicvoidmove intdx intdy x dx y dy useCount totalUseCount importpoints Point classTestextendsPoint publicvoidmoveBack intdx intdy x dx y dy useCount totalUseCount 15 类的继承 子类可重新定义父类中已有的静态变量 static classPoint staticintx 2 classTPointextendsPoint staticdoublex 4 7 publicstaticvoidmain String args newTPoint printX voidprintX System out println x Point x 4 72 16 类的继承 子类可重新定义父类中已有的实例变量 classPoint intx 2 classTPointextendsPoint doublex 4 7 voidprintBoth System out println x super x publicstaticvoidmain String args TPointt newTPoint t printBoth System out println t x Point t x 4 724 72 17 小结 子类继承了父类中声明为public或protected的成员 如果子类和父类在同一个包中 子类继承了父类中没有任何访问权限修饰符的成员 如果子类中声明了和父类同名的成员 则父类的这些成员将不会被继承 子类的成员变量隐藏了父类中同名的成员变量 子类的成员方法覆盖了父类中同名的成员方法 18 小结 类的继承重写 子类和父类的方法名 返回类型和参数相同 与重载 overload 的区别如果是实例方法 则称为子类重写 overriding 父类的实例方法如果是类方法 则称为子类隐藏父类的类方法 static 实例方法不能重写静态方法静态方法不能重写实例方法final private方法不能被重写或隐藏注 实例变量可隐藏静态变量静态变量可隐藏实例变量 classFather publicvoidset staticvoidget classSonextendsFather publicvoidset staticvoidget classSonextendsFather publicvoidget staticvoidset 19 类的继承 子类对象与父类对象Classroomc newMMClassroom 等价于 MMClassroomc1 newMMClassroom Classroomc c1 子类对象可以被视为其父类的一个对象父类对象不能当作某一个子类对象 20 类的继承 classSide voiddisplay System out println 平面 classSpotextendsSide privateintx y Spot intu intv x u y v voiddisplay System out println x y classLineextendsSide privateintx1 y1 x2 y2 Line inta1 intb1 inta2 intb2 x1 a1 y1 b1 x2 a2 y2 b2 voiddisplay System out println x1 y1 System out println x2 y2 Spots newSpot 2 3 Linel newLine 1 2 3 4 display s display l s display l display staticvoiddisplay Sides s display 21 一个文件中定义多个JAVA类 classGame Game inti System out println GameConstructor classBoardGameextendsGame BoardGame inti super i System out println BoardGameConstructor publicclassChessextendsBoardGame Chess super 3 System out println CartoonConstructor publicstaticvoidmain Stringargs Chessc newChess 仅保存为一个Chess java文件编译后 产生三个class文件 Game class BoardGame class Chess class执行 Chess class注 在类定义中只能将一个类定义为public 22 第七讲对象和类 续 类的继承 extends 抽象类 abstractclass 静态变量的初始化接口 interface 23 抽象类 abstractclass 一个未完成的类仅仅抽象类可以包含抽象方法 abstractmethods 抽象方法 仅仅申明了方法 但未实现有访问修饰词返回值类型方法名参数列表无方法体 24 抽象类 abstractclass abstractclassPoint intx 1 y 1 voidmove intdx intdy x dx y dy alert abstractvoidalert abstractclassColoredPointextendsPoint intcolor classSimplePointextendsPoint voidalert 抽象方法 有访问修饰符 返回值类型 方法名和参数列表 无方法体 25 抽象类 abstractclass 抽象类不能被实例化 例Pointp newPoint 子类继承抽象类时 必须重写抽象方法 否则仍为抽象类 abstractclassPoint intx 1 y 1 voidmove intdx intdy x dx y dy alert abstractvoidalert abstractclassColoredPointextendsPoint intcolor classSimplePointextendsPoint voidalert Pointp newSimplePoint 26 抽象类 abstractclass 多态性 abstractclassGraphics abstractvoidparameter abstractvoidarea classRectangleextendsGraphics doubleh w Rectangle doubleu doublev h u w v voidparameter System out println h w voidarea System out println h w Rectanglerec newRectangle 1 0 2 0 Circlecir newCircle 3 0 Red Graphics g rec cir for inti 0 i g length i g i parameter g i area classCircleextendsGraphics doubler Stringc Circle doubleu Stringv r u c v voidparameter System out println r c voidarea System out println Math PI r r 运行结果1 02 02 03 0Red28 274333882308138 多态性 polymorphism 应用场合 不同子类可以用不同的方式实现同一共同接口 该共同接口建立了一个基本形式 27 第七讲对象和类 续 类的继承 extends 抽象类 abstractclass 静态变量的初始化接口 interface 28 static变量的初始化 classSmember staticinti 100 staticbooleanb true charc t publicSmember publicstaticvoidmain Stringargs Smemberm1 newSmember Smemberm2 newSmember 不论产生多少个对象 属于类的静态变量只有一份 即只占有一份存储空间 classSmember staticinti staticbooleanb static i 100 b true System out println Instaticblock charc t publicSmember System out println Inconstructor publicstaticvoidmain Stringargs Smemberm1 newSmember Smemberm2 newSmember 输出结果InstaticblockInconstructorInconstructor 29 第七讲对象和类 续 类的继承 extends 抽象类 abstractclass 静态变量的初始化接口 interface 30 接口是对abstract类的进一步扩展接口中的方法都是未实现的 类似于抽象方法 目的是在实现接口的类之间建立一种协议接口中的变量都是常量定义一个类符合某个或一组接口 利用implements 接口 interface Aninterfaceisanamedcollectionofmethoddefinitions withoutimplementations Aninterfacecanalsodec

温馨提示

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

评论

0/150

提交评论