java程序设计教学做一体化教程继承与接口市公开课金奖市赛课一等奖课件_第1页
java程序设计教学做一体化教程继承与接口市公开课金奖市赛课一等奖课件_第2页
java程序设计教学做一体化教程继承与接口市公开课金奖市赛课一等奖课件_第3页
java程序设计教学做一体化教程继承与接口市公开课金奖市赛课一等奖课件_第4页
java程序设计教学做一体化教程继承与接口市公开课金奖市赛课一等奖课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、注意:开始用功了!第 1 页第1页配合例子源代码一起使用Power point 制作:耿祥义 张跃平继承与接口Java程序设计教学做一体化教程 第5章第2页主要内容第 3 页第3页5.1 子类 5.1.1关键知识 1子类定义 在类申明中,经过使用关键字extends来定义一个类子类,格式以下: class 子类名 extends 父类名 比如: class Student extends People 把Student类定义为People类子类、People类是Student类父类(超类)。2子类继承性 假如子类与父类在同一个包中,那么,子类自然地继承了父类中不是private组员变量作为自己

2、组员变量,而且也自然地继承了父类中不是private方法作为自己方法,继承组员变量或方法访问权限保持不变。 当子类与父类不在同一个包中时,子类只继承父类中protected和public访问权限组员变量作为子类组员变量;一样,子类只继承父类中protected和public访问权限方法作为子类方法。第 4 页第4页 5.1.2 能力目标 能定义子类,并知道子类那些组员变量或方法是从父类继承下来。 第 5 页第5页 5.1.3 任务驱动 将以下Application.5_1java中【代码】替换为程序代码。 People.java Student.java UniverStudent.java

3、Application5_1.java程序运行效果如图5.1。 第 6 页第6页 任务小结 (1)继承是一个由已经有类创建新类机制。能够先定义一个共有属性普通类,依据该普通类再定义含有特殊属性子类,子类继承普通类属性和行为,并依据需要增加它自己新属性和行为,子类能够让程序无须一切“从头做起”。 (2) instanceof运算符是Java独有双目运算符,其左面操作元是对象,右面操作元是类,当左面操作元是右面类或其子类所创建对象时,instanceof运算结果是true,不然是false。 (3)假如一个类是另一个类子类,那么UML经过使用一个实线连接两个类UML图来表示二者之间继承关系,实线起

4、始端是子类UML图,终点端是父类UML图,但终点端使用一个空心三角形表示实线结束,如图5.2。 第 7 页第7页 5.1.4 实践步骤 Application5_2.java 第 8 页第8页5.2 组员变量隐藏和方法重写 5.2.1 关键知识1隐藏组员变量 假如子类申明组员变量名字和从父类继承下来组员变量名字相同(申明类型能够不一样),在这种情况下,子类就会隐藏掉所继承组员变量。 子类一旦隐藏了继承组员变量,那么子类对象以及子类自己定义方法操作与父类同名组员变量时,就是操作子类重新申明这个组员变量。2方法重写(Override) 假如子类能够继承父类某个方法,那么子类就有权利重写这个方法。

5、第 9 页第9页 5.2.2 能力目标 子类经过重写方法,改变继承行为 。 第 10 页第10页 5.2.3 任务驱动将以下University.java和ImportantUniversity.java中【代码】替换为程序代码。Application5_3.java 程序运行效果如图5.3。第 11 页第11页 任务 小结重写方法既能够操作继承组员变量、调用继承方法,也能够操作子类新申明组员变量、调用新定义其它方法,但无法操作被子类隐藏组员变量和方法。需要尤其注意是, 子类在重写父类方法时,不能够降低方法访问权限(访问权限从高到低排列次序是:public、protected、友好、priva

6、te .第 12 页第12页 5.2.4 实践步骤 Application5_4.java 第 13 页第13页5.3 super关键字 5.3.1 关键知识_11用super操作被隐藏组员变量和方法 子类一旦隐藏了继承组员变量,那么子类创建对象就不再拥有该变量,该变量将归关键字super所拥有,一样子类一旦隐藏了继承方法,那么子类创建对象就不能调用被隐藏方法,该方法调用由关键字super负责。2使用super调用父类结构方法 当用子类结构方法创建一个子类对象时,子类结构方法总是先调用父类某个结构方法,也就是说,假如子类结构方法没有显著地指明使用父类哪个结构方法,子类就调用父类不带参数结构方法

7、。 子类在其结构方法中需使用super来调用父类结构方法,而且super必须是子类结构方法中头一条语句,即假如在子类结构方法中,没有显著地写出super关键字来调用父类某个结构方法,那么默认地有: super();第 14 页第14页 5.3.1 关键知识 _2class Student int number; Student() Student(int number) this.number = number; class UniverStudent extends Student boolean isMerried; UniverStudent(int number,boolean b)

8、super(number); /调用父类结构方法Student(int number) isMerried = b; 第 15 页第15页 5.3.2 能力目标 在子类中使用super关键字调用被隐藏(覆盖)方法 。第 16 页第16页 5.3.3 任务驱动将以下 BeijingWaterUser.java中【代码】替换为程序代码。WaterUser.java 和 Application5_5.java 程序运行效果如图5.4。第 17 页第17页 任务 小结(1)当super调用被隐藏方法时,该方法中出现组员变量就是被子类隐藏组员变量或继承组员变量。(2)假如类里定义了一个或多个结构方法,那

9、么Java不提供默认结构方法(不带参数结构方法),所以,当在父类中定义多个结构方法时,应该包含一个不带参数结构方法,以防子类省略super时出现错误。第 18 页第18页 5.3.4 实践步骤 Application5_6.java第 19 页第19页5.4 final关键字 5.4.1 关键知识 final关键字能够修饰类、组员变量和方法中局部变量。1final类 能够使用final将类申明为final类。final类不能被继承,即不能有子类。 final class A 2final方法 假如用final修饰父类中一个方法,那么这个方法不允许子类重写。3常量 假如组员变量或局部变量被修饰为

10、final,就是常量。第 20 页第20页 5.4.2 能力目标 掌握final关键字使用方法 。第 21 页第21页 5.4.3 任务驱动将Circle.java中【代码】替换为程序代码。 Application5_7.java 程序运行效果如图5.5。第 22 页第22页 任务 小结 final参数能够接收所传递值,但在方法内不允许对final参数进行写操作,即参数得到值之后,就按常量对待final参数 第 23 页第23页 5.4.4 实践步骤 A.java第 24 页第24页5.5 对象上转型对象 5.5.1 关键知识 1上转型对象 假设People类是American类父类,当用子类

11、创建一个对象,并把这个对象引用放到父类对象中时,比如: 2上转型对象特征1)上转型对象不能操作子类新增组员变量;不能调用子类新增方法。2)上转型对象能够访问子类继承或隐藏组员变量,也能够调用子类继承方法或子类重写实例方法。People person;person = new American ();或People person;American anAmerican = new American ();person = anAmerican;这时,称对象person是对象anAmerican上转型对象。第 25 页第25页 5.5.2 能力目标 掌握怎样使用上转型对象调用子类重写实例方法 第

12、26 页第26页 5.5.3 任务驱动将以下Application5_8.java中【代码】替换为程序代码。程序运行效果如图5.7。People.java ChinaPeople.java AmericanPeople.java 第 27 页第27页 任务 小结(1)在Aplication类main方法中,不能让上转型对象people调用speakChinese()或void speakEnglish(),因为这两个方法不是子类继承或重写方法,而是子类新增方法。(2) 假如子类重写了父类静态方法(static修饰方法),那么子类对象上转型对象不能调用子类重写静态方法,只能调用父类静态方法。 第

13、 28 页第28页 5.5.4 实践步骤 上机调试以下代码,尤其注意程序输出结果。 Application5_9.java 第 29 页第29页5.6 多态和抽象类 5.6.1 关键知识1多态性 多态性就是指父类某个方法被其子类重写时,能够各自产生自己功效行为,也就是说一个类不一样子类在重写方法时能够各自产生适合其子类对象行为。2用上转型对象表达多态 上转型对象在调用子类重写方法时就可能含有各种形态,因为不一样子类在重写父类方法时可能产生不一样行为。3抽象类及抽象方法 用关键字abstract修饰类称为abstract类(抽象类)。如: abstract class A 用关键字abstrac

14、t修饰方法称为abstract方法(抽象方法). 1)和普通类相比,abstract类中能够有abstract方法,也能够有非abstract方法。2)对于abstract类,不能使用new运算符创建该类对象。假如一个非抽象类是某个抽象类子类,那么它必须重写父类抽象方法,给出方法体。3)能够使用abstract类申明对象,尽管不能使用new运算符创建该对象,但该对象能够成为其子类对象上转型对象,那么该对象就能够调用子类重写方法第 30 页第30页 5.6.2 能力目标 掌握用抽象类对象做上转型对象,并表达子类多态 。第 31 页第31页 5.6.3 任务驱动将以下Application5_10

15、.java中【代码】替换为程序代码。Animal.java Dog.java Cat.java 程序运行效果如图5.8。第 32 页第32页 任务 小结 当用上转型对象调用子类重写方法时,含有很好通用性,因为程序无须关心子类详细对象名字,就能够让上转型对象调用子类体重写方法。不允许使用static修饰abstract方法,即abstract方法必须是实例方法。不允许使用final修饰abstract类,即要允许abstract类有子类 第 33 页第33页 5.6.4 实践步骤 上机调试以下代码,注意对象car是哪些对象上转性对象,并怎样表达多态 。Application5_11.java第

16、34 页第34页5.7 接口与实现 5.7.1 关键知识_11接口定义 使用关键字interface来定义一个接口。接口定义和类定义很相同,分为接口申明和接口体,比如: interface Printable public final static int MAX=100; public abstract void add(); public abstract float sum(float x ,float y); 接口使用关键字interface来申明自己是一个接口,格式: interface 接口名字 接口体中包含常量申明和抽象方法两部分。 接口体中全部常量访问权限一定都是public,

17、而且是static常量。 全部抽象方法访问权限一定都是public,如: interface Printable int MAX = 100; /等价于public final static int MAX=100; void add(); /等价于public abstract void add(); float sum(float x ,float y); /等价于public abstract float sum(float x ,float y); 第 35 页第35页 5.7.1 关键知识 _22实现接口 接口由类来实现,即由类来重写接口中方法。一个类能够在类申明中使用关键字impl

18、ements申明实现一个或多个接口。假如类实现多个接口,用逗号隔开接口名,如A类实现Printable和Addable接口: class A implements Printable,Addable 假如一个非抽象类实现了某个接口,那么这个类必须重写这个接口中全部方法。 需要注意是,因为接口中方法一定是public abstract方法,所以类在重写接口方法时不但要去掉abstract修饰符、给出方法体,而且方法访问权限一定要显著地用public来修饰。第 36 页第36页 5.7.2 能力目标 握类怎样实现接口 。第 37 页第37页 5.7.3 任务驱动将以下Application5_12

19、.java 中【代码】替换为程序代码 程序运行效果如图5.9第 38 页第38页 任务 小结接口思想在于它能够要求一些类有相同名称方法,但方法详细内容能够不一样,即要求这些类实现接口,以确保这些类一定有接口中所申明方法(即所谓方法绑定)。接口在要求一些类有相同名称方法同时,并不强迫这些类含有相同父类。第 39 页第39页 5.7.4 实践步骤 第 40 页第40页5.8 接口回调 5.8.1 关键知识 1接口变量 接口也是Java中一个主要数据类型,用接口申明变量称为接口变量。 接口变量中能够存放实现该接口类实例引用,即存放对象引用。 接口回调就是指:能够把实现某一接口类创建对象引用赋给该接口

20、申明接口变量中,那么该接口变量就能够调用被类实现接口方法。实际上,当接口变量调用被类实现接口方法时,就是通知对应对象调用这个方法。2接口与多态 把实现接口类实例引用赋值给接口变量后,该接口变量就能够回调类重写接口方法。 由接口产生多态就是指不一样类在实现同一个接口时可能含有不一样实现方式,那么接口变量在回调接口方法时就可能含有各种形态。第 41 页第41页 5.8.2 能力目标 使用接口变量调用类实现接口方法,即掌握接口回调技术 。第 42 页第42页 5.8.3 任务驱动将以下Application5_13.java中【代码】替换为程序代码。Sound.java SoundMachine.j

21、ava Piano.java Violin.java 程序运行效果如图5.11。 第 43 页第43页 任务 小结 (1)使用接口能够让程序愈加轻易维护和扩展,比如,在任务模版中,再增加实现Sound接口类时,不需要修改SoundMachine类代码。(2)在设计程序时应该依据详细情况来确定是使用抽象类还是接口。第 44 页第44页 5.8.4 实践步骤 上机调试以下程序,注意接口回调是怎样表达多态。 Application5_14.java 第 45 页第45页5.9 匿名类 5.9.1 关键知识_1 1内部类 能够在一个类中再定义另一个类,这么类称作当前类中内部类,而包含内部类类称为内部类

22、外嵌类。内部类外嵌类组员变量在内部类中依然有效,内部类中方法也能够调用外嵌类中方法。RedCowForm.java 内部类类体中不能够申明类变量和类方法。内部类仅供它外嵌类使用,其它类不能够用某个类内部类申明对象。class RedCowForm RedCow cow; /内部类申明对象cow RedCowForm() cow = new RedCow(150,112); public void showCowMess() cow.speak(); class RedCow /内部类申明 String cowName = 红牛; int height,weight,price; RedCow(int h,int w) height = h; weight = w; void speak() System.out.println(高:+height+cm 重:+weight); /内部类结束第 46 页第46页 5.9.1 关键知识 _22匿名类与子类 Java允许直接使用一个类子类类体创建一个子类对象。比如,假设Bank是一个类,那么以下代码就是用Bank一个子类创建对象: new Bank() 匿名类类体 ; 使用匿名类时,必定是在某个类中直接用匿名类创建对象,所以匿名类一定

温馨提示

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

评论

0/150

提交评论