Java程序设计-第3章-类类的继承和接口课件_第1页
Java程序设计-第3章-类类的继承和接口课件_第2页
Java程序设计-第3章-类类的继承和接口课件_第3页
Java程序设计-第3章-类类的继承和接口课件_第4页
Java程序设计-第3章-类类的继承和接口课件_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

第3章

类、类的继承和接口第3章

类、类的继承和接口1本章目标理解面向对象程序设计的思想掌握与面向对象的封装性相关的基本概念掌握与面向对象的继承性相关的基本概掌握与面向对象的多态性相关的基本概念本章目标理解面向对象程序设计的思想2第3章类、类的继承和接口3.1类3.2包的创建和使用、源文件结构3.3类的继承和多态3.4接口和接口的实现3.5内部类和匿名内部类第3章类、类的继承和接口33.1类3.1.1类的修饰符3.1.2类的成员3.1.3域、域的访问控制修饰符和其他修饰符3.1.4静态方法、抽象方法和最终方法3.1.5构造方法3.1.6关键字this3.1.7抽象和封装3.1.8对象的清除3.1类3.1.1类的修饰符43.1类3.1.1类的修饰符[修饰符1]class类名[extends父类名][implements接口名列表]{

[修饰符2]类型名域名;public类名([参数列表]){ //……;}[修饰符3]返回值类型方法名([参数列表])[throws异常]{ //……;}} 修饰符1:public、abstract|final 修饰符2:public|protected|private、static、fianl、transient、volatile 修饰符3:public|protected|private、static、fianl|abstract、synchronized、native3.1类3.1.1类的修饰符53.1类3.1.2类的成员域:也称属性、字段、成员变量。方法内部类3.1类3.1.2类的成员63.1类3.1.3域、域的访问控制修饰符和其他修饰符域的初始化声明其他类对象作为一个类的域域的访问控制封装和公开静态域最终域域的声明格式3.1类3.1.3域、域的访问控制修饰符和其他修饰符73.1类3.1.3域、域的访问控制修饰符和其他修饰符域的初始化Allreferencetype——nullbyte、short、int——0long——0Lfloat——0.0Fdouble——0.0Dchar——’\u0000’boolean——false;例3.1(Page94):TestBirthdy.java3.1类3.1.3域、域的访问控制修饰符和其他修饰符83.1类3.1.3域、域的访问控制修饰符和其他修饰符声明其他类对象作为一个类的域例3.2(Page96):TestPerson.java与Person.java3.1类3.1.3域、域的访问控制修饰符和其他修饰符93.1类3.1.3域、域的访问控制修饰符和其他修饰符域的访问控制封装和公开访问权限修饰符类子类包其它类privateXdefaultXXprotectedXXXpublicXXXX3.1类3.1.3域、域的访问控制修饰符和其他修饰符103.1类3.1.3域、域的访问控制修饰符和其他修饰符域的访问控制封装和公开为了实现良好的封装性,通常将类的域声明为private,再通过public的方法来对这个域进行访问。例3.3(Page98)3.1类3.1.3域、域的访问控制修饰符和其他修饰符113.1类3.1.3域、域的访问控制修饰符和其他修饰符静态域所有对象共享的域,也称类变量(区别于实体变量),用static修饰,可通过对象名或类名访问。例3.4(Page100):TestCar.java与Car.java不能把任何方法体中的变量(局部变量)声明为静态的!注意3.1类3.1.3域、域的访问控制修饰符和其他修饰符123.1类3.1.3域、域的访问控制修饰符和其他修饰符最终域publicstaticfinal类型常量名=初始值;最终域的值一旦确定就不能重新赋值!一般通过类名引用最终域。域的声明格式3.1类3.1.3域、域的访问控制修饰符和其他修饰符133.1类3.1.4静态方法、抽象方法和最终方法方法的定义格式方法的访问控制修饰符静态方法最终方法抽象方法3.1类3.1.4静态方法、抽象方法和最终方法143.1类3.1.4静态方法、抽象方法和最终方法静态方法有时希望不创建对象就能调用某个方法调用静态方法的格式:类名.静态方法 或者 对象名.静态方法例3.5(Page103):UseStaticVar.java3.1类3.1.4静态方法、抽象方法和最终方法153.1类3.1.4静态方法、抽象方法和最终方法静态方法在静态方法里只能直接调用同类中其他的静态成员,而不能直接调用同类中的非静态成员。静态方法不能以任何方式引用this和super关键字。注意3.1类3.1.4静态方法、抽象方法和最终方法注意163.1类3.1.4静态方法、抽象方法和最终方法最终方法用关键字final修饰的方法,不能被重写/覆盖(Page104)。抽象方法用关键字abstract修饰的方法,只有方法头,没有方法体。左、右花括号+左、右花括号之间的部分,均用分号代替!3.1类3.1.4静态方法、抽象方法和最终方法左、右173.1类3.1.5构造方法构造方法的规则:Page105构造方法的重载例3.6(Page106):TestBirthday.java与Birthday.java3.1类3.1.5构造方法183.1类3.1.6关键字this含义及使用:Page107例3.6(Page107):TestBirthday.java与Birthday.java3.1类3.1.6关键字this193.1类3.1.7抽象和封装3.1.8对象的清除垃圾回收器System.gc();3.1类3.1.7抽象和封装203.2包的创建和使用、源文件结构3.2.1包3.2.2创建包和使用包中的类3.2.3源文件结构和程序说明文档的生成3.2包的创建和使用、源文件结构213.2包的创建和使用、源文件结构3.2.1包Java通过引入包(package)机制,提供类的多层类命名空间,来解决类的命名冲突问题。完整的类名是:包名.类名。类及类成员的访问:Page110。3.2包的创建和使用、源文件结构3.2.1包223.2包的创建和使用、源文件结构3.2.2创建包和使用包中的类package语句package包名[.下一级包名[.……]];javac命令中的-d选项import语句import包名.类名;import包名.*;3.2包的创建和使用、源文件结构3.2.2创建包和使233.2包的创建和使用、源文件结构3.2.3源文件结构和程序说明文档的生成Page1133.2包的创建和使用、源文件结构3.2.3源文件结构243.3类的继承和多态3.3.1类的包含关系和继承关系3.3.2类成员的继承和重新定义3.3.3子类对父类构造方法的调用——关键字super3.3.4父类和子类对象的转换3.3.5抽象类和最终类3.3类的继承和多态3.3.1类的包含关系和继承关系253.3类的继承和多态3.3.1类的包含关系和继承关系汽车发动机车轮方向盘Has-A(包含)关系红星苹果红富士苹果苹果梨水果Is-A(继承)关系3.3类的继承和多态3.3.1类的包含关系和继承关系263.3类的继承和多态3.3.2类成员的继承和重新定义例3.10(P113)、例3.11(P119)与例3.12(P120)定义子类的格式:extends关键字类成员的继承子类拥有父类所有非私有变量(/域)和方法的使用权。子类添加成员3.3类的继承和多态3.3.2类成员的继承和重新定义273.3类的继承和多态3.3.2类成员的继承和重新定义重新定义从父类继承来的成员方法覆盖的规则变量隐藏:可通过”super.变量名”引用父类同名变量。方法覆盖定义:子类有与父类同名的方法。规则:Page118子类的方法名、返回值类型、参数列表与父类一样访问控制级别:子类不能比父类更严格(宽松性:public>protected>默认>private)异常:子类不多于父类3.3类的继承和多态3.3.2类成员的继承和重新定义283.3类的继承和多态3.3.3子类对父类构造方法的调用——关键字super(例3.13、例3.14)super.变量名引用被子类隐藏的变量super.方法名调用被子类覆盖的父类的方法super(参数列表)子类构造方法调用父类构造方法super(参数列表)必须是子类构造方法中的第一个语句!不能与this(参数列表)同时出现在构造方法中!注意3.3类的继承和多态3.3.3子类对父类构造方法的调293.3类的继承和多态3.3.4父类和子类对象的转换gouGouIsyanJinganAnimal?IsyanJingaDog?AnimalyanJing=newDog();DoggouGou=(Dog)yanJing;yanJing父类子类3.3类的继承和多态3.3.4父类和子类对象的转换g303.3类的继承和多态3.3.4父类和子类对象的转换IsyanJinganAnimal?IsyanJingaDog?AnimalyanJing=newCat();DoggouGou=(Dog)yanJing;yanJing3.3类的继承和多态3.3.4父类和子类对象的转换I313.3类的继承和多态3.3.4父类和子类对象的转换gouGouAnimalyanJing=newDog();if(yanJinginstanceofDog) DoggouGou=(Dog)yanJing;yanJingIsyanJingaDog?instanceofyanJing.shout();......shout()3.3类的继承和多态3.3.4父类和子类对象的转换g323.3类的继承和多态3.3.5抽象类和最终类抽象类由abstract修饰的类,只能做父类,不能实例化。最终类由final修饰的类,不能做父类。3.3类的继承和多态3.3.5抽象类和最终类333.4接口和接口的实现3.4.1接口概述3.4.2自定义接口和实现接口3.4.3Java类库中的接口实现举例3.4接口和接口的实现343.4接口和接口的实现3.4.2自定义接口和实现接口自定义接口[public]interface接口名称[extends父接口名列表]{//静态常量

[[public][static][final]数据类型变量名=常量值;]//抽象方法

[[public][abstract]返回值类型方法名(参数列表);]}3.4接口和接口的实现3.4.2自定义接口和实现接口353.4接口和接口的实现3.4.2自定义接口和实现接口实现接口[修饰符]class类名[extends父类名][implements接口A,接口B,…]{类的成员变量和成员方法;为接口A中的所有方法编写方法体,实现接口A;为接口B中的所有方法编写方法体,实现接口B;……}3.4接口和接口的实现3.4.2自定义接口和实现接口363.4接口和接口的实现3.4.2自定义接口和实现接口接口实现举例Assembler.java思考:如果SoundCard类中具有PCI接口中的所有方法,但没有明确声明它实现了PCI接口,SoundCard的对象实例能不能直接传递给MainBoard的usePCICard方法使用?3.4接口和接口的实现3.4.2自定义接口和实现接口373.5内部类和匿名内部类3.5内部类和匿名内部类38要点总结类的定义(private/public成员、this、常量)对象的创建与使用(构造方法、new、域选择运算符)包的声明与引用类的继承(extends、super)、方法覆盖(/重载)、对象类型转换接口的定义与实现要点总结类的定义(private/public成员、this39第3章

类、类的继承和接口第3章

类、类的继承和接口40本章目标理解面向对象程序设计的思想掌握与面向对象的封装性相关的基本概念掌握与面向对象的继承性相关的基本概掌握与面向对象的多态性相关的基本概念本章目标理解面向对象程序设计的思想41第3章类、类的继承和接口3.1类3.2包的创建和使用、源文件结构3.3类的继承和多态3.4接口和接口的实现3.5内部类和匿名内部类第3章类、类的继承和接口423.1类3.1.1类的修饰符3.1.2类的成员3.1.3域、域的访问控制修饰符和其他修饰符3.1.4静态方法、抽象方法和最终方法3.1.5构造方法3.1.6关键字this3.1.7抽象和封装3.1.8对象的清除3.1类3.1.1类的修饰符433.1类3.1.1类的修饰符[修饰符1]class类名[extends父类名][implements接口名列表]{

[修饰符2]类型名域名;public类名([参数列表]){ //……;}[修饰符3]返回值类型方法名([参数列表])[throws异常]{ //……;}} 修饰符1:public、abstract|final 修饰符2:public|protected|private、static、fianl、transient、volatile 修饰符3:public|protected|private、static、fianl|abstract、synchronized、native3.1类3.1.1类的修饰符443.1类3.1.2类的成员域:也称属性、字段、成员变量。方法内部类3.1类3.1.2类的成员453.1类3.1.3域、域的访问控制修饰符和其他修饰符域的初始化声明其他类对象作为一个类的域域的访问控制封装和公开静态域最终域域的声明格式3.1类3.1.3域、域的访问控制修饰符和其他修饰符463.1类3.1.3域、域的访问控制修饰符和其他修饰符域的初始化Allreferencetype——nullbyte、short、int——0long——0Lfloat——0.0Fdouble——0.0Dchar——’\u0000’boolean——false;例3.1(Page94):TestBirthdy.java3.1类3.1.3域、域的访问控制修饰符和其他修饰符473.1类3.1.3域、域的访问控制修饰符和其他修饰符声明其他类对象作为一个类的域例3.2(Page96):TestPerson.java与Person.java3.1类3.1.3域、域的访问控制修饰符和其他修饰符483.1类3.1.3域、域的访问控制修饰符和其他修饰符域的访问控制封装和公开访问权限修饰符类子类包其它类privateXdefaultXXprotectedXXXpublicXXXX3.1类3.1.3域、域的访问控制修饰符和其他修饰符493.1类3.1.3域、域的访问控制修饰符和其他修饰符域的访问控制封装和公开为了实现良好的封装性,通常将类的域声明为private,再通过public的方法来对这个域进行访问。例3.3(Page98)3.1类3.1.3域、域的访问控制修饰符和其他修饰符503.1类3.1.3域、域的访问控制修饰符和其他修饰符静态域所有对象共享的域,也称类变量(区别于实体变量),用static修饰,可通过对象名或类名访问。例3.4(Page100):TestCar.java与Car.java不能把任何方法体中的变量(局部变量)声明为静态的!注意3.1类3.1.3域、域的访问控制修饰符和其他修饰符513.1类3.1.3域、域的访问控制修饰符和其他修饰符最终域publicstaticfinal类型常量名=初始值;最终域的值一旦确定就不能重新赋值!一般通过类名引用最终域。域的声明格式3.1类3.1.3域、域的访问控制修饰符和其他修饰符523.1类3.1.4静态方法、抽象方法和最终方法方法的定义格式方法的访问控制修饰符静态方法最终方法抽象方法3.1类3.1.4静态方法、抽象方法和最终方法533.1类3.1.4静态方法、抽象方法和最终方法静态方法有时希望不创建对象就能调用某个方法调用静态方法的格式:类名.静态方法 或者 对象名.静态方法例3.5(Page103):UseStaticVar.java3.1类3.1.4静态方法、抽象方法和最终方法543.1类3.1.4静态方法、抽象方法和最终方法静态方法在静态方法里只能直接调用同类中其他的静态成员,而不能直接调用同类中的非静态成员。静态方法不能以任何方式引用this和super关键字。注意3.1类3.1.4静态方法、抽象方法和最终方法注意553.1类3.1.4静态方法、抽象方法和最终方法最终方法用关键字final修饰的方法,不能被重写/覆盖(Page104)。抽象方法用关键字abstract修饰的方法,只有方法头,没有方法体。左、右花括号+左、右花括号之间的部分,均用分号代替!3.1类3.1.4静态方法、抽象方法和最终方法左、右563.1类3.1.5构造方法构造方法的规则:Page105构造方法的重载例3.6(Page106):TestBirthday.java与Birthday.java3.1类3.1.5构造方法573.1类3.1.6关键字this含义及使用:Page107例3.6(Page107):TestBirthday.java与Birthday.java3.1类3.1.6关键字this583.1类3.1.7抽象和封装3.1.8对象的清除垃圾回收器System.gc();3.1类3.1.7抽象和封装593.2包的创建和使用、源文件结构3.2.1包3.2.2创建包和使用包中的类3.2.3源文件结构和程序说明文档的生成3.2包的创建和使用、源文件结构603.2包的创建和使用、源文件结构3.2.1包Java通过引入包(package)机制,提供类的多层类命名空间,来解决类的命名冲突问题。完整的类名是:包名.类名。类及类成员的访问:Page110。3.2包的创建和使用、源文件结构3.2.1包613.2包的创建和使用、源文件结构3.2.2创建包和使用包中的类package语句package包名[.下一级包名[.……]];javac命令中的-d选项import语句import包名.类名;import包名.*;3.2包的创建和使用、源文件结构3.2.2创建包和使623.2包的创建和使用、源文件结构3.2.3源文件结构和程序说明文档的生成Page1133.2包的创建和使用、源文件结构3.2.3源文件结构633.3类的继承和多态3.3.1类的包含关系和继承关系3.3.2类成员的继承和重新定义3.3.3子类对父类构造方法的调用——关键字super3.3.4父类和子类对象的转换3.3.5抽象类和最终类3.3类的继承和多态3.3.1类的包含关系和继承关系643.3类的继承和多态3.3.1类的包含关系和继承关系汽车发动机车轮方向盘Has-A(包含)关系红星苹果红富士苹果苹果梨水果Is-A(继承)关系3.3类的继承和多态3.3.1类的包含关系和继承关系653.3类的继承和多态3.3.2类成员的继承和重新定义例3.10(P113)、例3.11(P119)与例3.12(P120)定义子类的格式:extends关键字类成员的继承子类拥有父类所有非私有变量(/域)和方法的使用权。子类添加成员3.3类的继承和多态3.3.2类成员的继承和重新定义663.3类的继承和多态3.3.2类成员的继承和重新定义重新定义从父类继承来的成员方法覆盖的规则变量隐藏:可通过”super.变量名”引用父类同名变量。方法覆盖定义:子类有与父类同名的方法。规则:Page118子类的方法名、返回值类型、参数列表与父类一样访问控制级别:子类不能比父类更严格(宽松性:public>protected>默认>private)异常:子类不多于父类3.3类的继承和多态3.3.2类成员的继承和重新定义673.3类的继承和多态3.3.3子类对父类构造方法的调用——关键字super(例3.13、例3.14)super.变量名引用被子类隐藏的变量super.方法名调用被子类覆盖的父类的方法super(参数列表)子类构造方法调用父类构造方法super(参数列表)必须是子类构造方法中的第一个语句!不能与this(参数列表)同时出现在构造方法中!注意3.3类的继承和多态3.3.3子类对父类构造方法的调683.3类的继承和多态3.3.4父类和子类对象的转换gouGouIsyanJinganAnimal?IsyanJingaDog?AnimalyanJing=newDog();DoggouGou=(Dog)yanJing;yanJing父类子类3.3类的继承和多态3.3.4父类和子类对象的转换g693.3类的继承和多态3.3.4父类和子类对象的转换IsyanJinganAnimal?IsyanJingaDog?AnimalyanJing=newCat();DoggouGou=(Dog)yanJing;yanJing3.3类的继承和多态3.3.4父类和子类对象的转换I703.3类的继承和多态3.3.4父类和子类对象的转换gouGouAnimalyanJing=newDog();if(yanJinginstanceof

温馨提示

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

评论

0/150

提交评论