Java应用开发与实践 教学课件 ppt 作者 刘乃琦 苏畅 第8章 接口、继承和多态

上传人:E**** 文档编号:89369454 上传时间:2019-05-24 格式:PPT 页数:32 大小:1.23MB
返回 下载 相关 举报
Java应用开发与实践 教学课件 ppt 作者  刘乃琦 苏畅 第8章  接口、继承和多态_第1页
第1页 / 共32页
Java应用开发与实践 教学课件 ppt 作者  刘乃琦 苏畅 第8章  接口、继承和多态_第2页
第2页 / 共32页
Java应用开发与实践 教学课件 ppt 作者  刘乃琦 苏畅 第8章  接口、继承和多态_第3页
第3页 / 共32页
Java应用开发与实践 教学课件 ppt 作者  刘乃琦 苏畅 第8章  接口、继承和多态_第4页
第4页 / 共32页
Java应用开发与实践 教学课件 ppt 作者  刘乃琦 苏畅 第8章  接口、继承和多态_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《Java应用开发与实践 教学课件 ppt 作者 刘乃琦 苏畅 第8章 接口、继承和多态》由会员分享,可在线阅读,更多相关《Java应用开发与实践 教学课件 ppt 作者 刘乃琦 苏畅 第8章 接口、继承和多态(32页珍藏版)》请在金锄头文库上搜索。

1、,本章要求:,第8章 接口、继承和多态,掌握接口的使用 掌握类的继承 掌握使用super关键字 了解什么是多态,主要内容,1、接口的使用 2、类的继承 3、多态 4、Object类 5、对象类型的转换 6、instanceof判断对象类型,第8章 接口、继承和多态,8.1.1 接口的定义 8.1.2 接口的实现,8.1 接口的使用,8.1.1 接口的定义,使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成。定义接口的基本语法格式如下: 修饰符 interface 接口名 extends 父接口名列表 public

2、static final 变量; public abstract 方法; 定义接口的语法格式的参数说明如表8-1所示: 表8-1 定义接口的语法格式的参数说明,8.1.2 接口的实现,接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,基本语法格式如下所示: 修饰符 class extends 父类名 implements 接口列表 实现接口的语法格式的参数说明如表8-2所示: 表8-2 实现接口的语法格式的参数说明 在类中实现接口时,方法名、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。,8.2.1 继承的实现 8.2.

3、2 继承中的重写 8.2.3 使用super关键字,8.2 类的继承,在Java语言中,继承通过关键字extends来实现。也就是用extends指明当前类是子类,并指明从哪个类继承而来。即在子类的声明中,通过使用关键字extends来显式的指明其父类。其基本的语法格式如下: 修饰符 class 子类名 extends 父类名 类体 修饰符:可选参数,用于指定类的访问权限,可选值为public、abstract和final。 子类名:必选参数,用于指定子类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。 extends 父类名:必选参数,用于指定要定义的子类继承于哪个父类。

4、,8.2.1 继承的实现,【例8-2-1】 在项目中创建Bird类,定义一个成员变量描述颜色。创建Pigeon类,它继承了Bird类。在构造方法中,对继承的color变量赋值。 public class Bird String color; public class Pigeon extends Bird public Pigeon() color = “White“; ,重写是指父子类之间的关系,当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时,称为子类的方法重写了父类的方法。重写体现了子类补充或者改变父类方法的能力。通过

5、重写,可以使一个方法在不同的子类中表现出不同的行为。,8.2.2 继承中的重写,【例8-2-2】 在项目中创建Bike类和Bird类,分别重写其toString()方法。public class Bike Override public String toString() / 重写toString()方法 return “Bike“; public class Bird Override public String toString() / 重写toString()方法 return “Bird“; public class Test public static void main(Strin

6、g args) Object bike = new Bike(); / 创建Bike类对象 System.out.println(bike); / 输出Bike类对象 Object bird = new Bird(); / 创建Bird类对象 System.out.println(bird); / 输出Bird类对象 ,程序的运行效果如图8-1所示。,说明:Object类是所有Java类的父类。在输出引用类型变量时,会调用在Object类中定义的toString()方法。,super关键字主要有以下两种用途。 1调用父类的构造方法 子类可以调用由父类声明的构造方法。但是必须在子类的构造方法中使

7、用super关键字来调用。其具体的语法格式如下: super(参数列表); 如果父类的构造方法中包括参数,则参数列表为必选项,用于指定父类构造方法的入口参数。 2操作被隐藏的成员变量和被重写的成员方法 如果想在子类中操作父类中被隐藏的成员变量和被重写的成员方法,也可以使用super关键字,具体格式如下所示: super.成员变量名 super.成员方法名(参数列表),8.2.3 使用super关键字,多态性是面向对象程序设计的重要部分。在Java中,通常使用方法的重载(Overloading)和重写(Overriding)实现类的多态性。其中,重写已经在前面节中介绍,下面将对方法的重载进行介绍

8、。 方法的重载是指在一个类中,出现多个方法名相同,但参数个数或参数类型不同的方法,则称为方法的重载。Java在执行具有重载关系的方法时,将根据调用参数的个数和类型区分具体执行的是哪个方法。下面将通过一个具体的实例进行说明。,8.3 多态,【例8-3】 在项目中创建MaxNumber类,定义两个getMax()方法,分别用来比较int类型和double类型变量并获得最大值。 public class MaxNumber public static int getMax(int number1, int number2) return (number1 number2 ? number1 : nu

9、mber2); public static double getMax(double number1, double number2) return (number1 number2 ? number1 : number2); public static void main(String args) int intMax = getMax(12, 21); System.out.println(“12和21的最大值:“ + intMax); double doubleMax = getMax(12.0, 21.0); System.out.println(“12.0和21.0的最大值:“ +

10、doubleMax); ,程序的运行效果如图8-2所示。,8.4.1 getClass()方法 8.4.2 toString()方法 8.4.3 equals()方法,8.4 Object类,在开始学会使用class关键字定义类时,就应用到了继承原理,因为在Java中,所有的类都直接或间接继承了java.lang.Object类。Object类是比较特殊的类,它是所有类的父类,是Java类层中最高层类,实质上Java中任何一个类都是它的子类。当创建一个类时,总是在继承,除非某个类已经指定要从其他类继承,否则它就是从java.lang.Object类继承而来的,可见Java中的每个类都源于jav

11、a.lang.Object类,如String、Integer等类都是继承于Object类;除此之外自定义的类也都继承于Object类。由于所有类都是Object子类,所以在定义类时,省略了extends Object关键字,图8-3中描述了这一原则。 注意:Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法被定义为final类型。,Object类,下面详细讲述Object类中的几个重要方法。 1getClass()方法 getClass()方法是Object类的定义的方法,它会返回对象执行时的Class实例,然后使用此实

12、例调用getName()方法可以取得类的名称。语法如下: getClass().getname(); 可以将getClass()方法与toString()方法联合使用。 2toString()方法 Object类中toString()方法的功能是将一个对象返回为字符串形式,它会返回一个String实例。在实际的应用中通常重写toString()方法,为对象提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法。,3equals()方法 在讲解Java基础语法时,曾介绍过“=”操作符。它可以用来比较两个基本类型的变量值是否相同。此外,还可以将其用于

13、引用类型。这时,它用于比较两个引用是否指向同一个对象。Object类中定义的equals()方法,其默认实现也是比较两个引用是否指向同一个对象。这在实际开发中并无任何意义。因此通常需要重写该方法来比较实际内容是否相同。,【例8-4-3】在项目中创建EqualsDemo类,在主方法中使用“=”和equals()方法来比较内容相同的两个字符串对象。 public class EqualsDemo public static void main(String args) String s1 = new String(“mrsoft“); / 创建新字符串 String s2 = new String

14、(“mrsoft“); / 创建新字符串 System.out.println(s1 + “和“ + s2 + “指向同一对象:“ + (s1 = s2); System.out.println(s1 + “和“ + s2 + “内容相同:“ + (s1.equals(s2); ,程序的运行效果如图8-5所示。,8.5.1 向上转型 8.5.2 向下转型,8.5 对象类型的转换,我们说平行四边形是特殊的四边形,也就是说平行四边形是四边形类型的一种,那么就可以将平行四边形对象看作是一个四边形对象。再比如一只鸡是家禽的一种,而家禽是动物中的一种,那么也可以将鸡对象看作是一个动物对象。可以使用如代码

15、表示平行四边形与四边形的关系。,8.5.1 向上转型,【例8-5-1】在项目中创建Parallelogram类,在类中创建Quadrangle类,并使Parallelogram类继承Quadrangle类,然后在主方法中调用父类的draw()方法。 class Quadrangle / 四边形类 public static void draw(Quadrangle q) / 四边形类中的方法 / SomeSentence public class Parallelogram extends Quadrangle / 平行四边形类,继承了四边形类 public static void main(String args) Parallelogram p = new Parallelogram(); / 实例化平行四边形类对象引用 draw(p); / 调用父类方法 ,在例8-5-1中,平行四边形类继承了四边形类,四边形类存在一个draw()方法,它的参数是Quadrangle(四边形类)类型,而在平行四边形类的主方法中调用draw()时给予的参数类型却是Parallelogram(平行四边形类)类型的。在这里一直在强调一个问题,就是平行四边形也是一种类型的四边形,所以可以将平行四边形类的对象看作是一个四边形类的对象,这种技术被

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号