轻松学Java之继承与多态PPT课件.pptx

第8章 继承与多态,在前面我们已经了解了类的基本使用方法。对于面向对象的程序而言,它的精华在于类的继承可以以既有的类为基础,进而派生出新的类。通过这种方式,我们能快捷的开发出新的类,而不需要编写相同的代码,从而大大将少了工作量。而运用类的多态,通过方法的继承和重载,使类中对象有了更大的灵活性。,8.1 继承的概念,在Java中,从现有类出发定义一个新类,称为新类继承了现有的类,其中被继承的现有类叫做超类(superclass)或父类,由继承而得到的类称为子类(subclass)。在Java中支持类的单继承和多层继承,但是不支持多重继承,即一个类只能继承一个类而不能继承多个类。,8.1.1 继承的实现,实现继承的格式如图8.1所示。 Java类的继承可用图8.2所示的语法来实现。,,,8.1.2 成员字段的继承,父类中声明的字段可以在子类中直接继承,不需要再声明。子类可以继承父类中的字段变成子类自身的字段。,8.1.3 成员方法的继承,成员方法也可以继承。父类中声明的方法,子类中可以直接访问无需再声明,同样可以达到代码重用的目的。子类除了可以继承父类中的字段及方法之外,还可以增加自己的成员方法。,8.2 访问修饰符,在编写程序的过程中,我们有时并不想父类所有的成员都被子类继承,这时就可以通过访问修饰符去限制继承和可访问权限。 我们先通过一个表大概了解一下有哪些修饰符以及它们对外部类和子类的可见性,如表8.1所示。,,8.2 访问修饰符,这些修饰符修饰的父类和子类的继承关系大致如图8.6所示。,,8.2.1 public访问修饰符,用public修饰的类成员(包括字段和方法)称为公有的,公有成员允许Java系统中所有的类访问,外界可以直接存取公有数据,调用公有方法。,8.2.2 private访问修饰符,用private修饰的类成员称为私有的,类的私有成员只能被这个类的方法直接访问。,8.2.3 protected访问修饰符,用protected修饰的类成员称为被保护的。类的被保护成员允许其子类继承。如果一个类有派生子类,为了使子类能够直接继承父类的成员,则把这些成员(大部分是数据)说明为被保护的。,8.2.4 default访问修饰符,如果类成员前面没有任何关键字修饰,则称为默认的。默认的类成员除了允许被其归属的类访问外,还允许同一个包中的其他类访问。,8.3 方法的覆盖,方法的覆盖也是我们经常会遇到的情况。所谓“覆盖”,就是方法名称相同,但却在不同的场合做不同的事。当一个子类继承一个父类中的方法的名称、参数、类型等都完全一致时,就称子类中的这个方法覆盖了父类中的方法。同样,如果子类中重新定义了父类中已有的字段,则称子类的字段覆盖了父类中的字段。,8.3.1 方法的覆盖格式,方法覆盖的语法格式如图8.11所示。,,8.3.2 super关键字,在Java的方法覆盖中我们经常要用到一个特殊的关键字super关键字。super关键字的主要功能是完成子类在覆盖了父类中的方法后,调用子类所复制的父类的字段和方法。其语法格式如图8.13所示。 我们还可以使用super调用父类中的构造方法,这也是super在程序中经常要用到的作用。,,8.3.3 几种不能使用方法覆盖的情况,并不是所有的方法都是可以被覆盖的。有时我们也需要子类不能覆盖父类的方法。一般情况下,有三种方法不能被子类覆盖,分别是static方法、final方法和final类中的方法。为了使大家更好地理解这三种情况,我们分别举一个例子来说明。 1. static方法 2. final方法 3. final类中的方法,8.4 多层继承,我们在前面提到了在Java中类不可以进行多重继承,但是是可以进行多层继承的。对于多层继承,Java也只允许单继承,即一个子类只能有一个父类。当然,一个父类有多个子类也是允许的。图8.20所示的多重继承就是错误的。,,,8.4 多层继承,一般的多层继承的语法格式如图8.22所示。 例如,给定三个类A、B和C。C是B的一个子类,而B又是A的一个子类。当这种类型的情形发生时,每个子类继承它的所有父类的属性。这种情况下,C继承B和A的所有方面。,,,,8.5 多态,在前面的章节中我们已经为大家介绍了面向对象的封装性和继承性。这一节我们继续为大家讲解Java最后一个也是非常重要的特性多态。,8.5.1 多态的基本概念,什么是多态呢多态的本质是一个程序中同名的不同方法。在面向对象的程序中,多态可以表现在很多方面,例如可以通过子类对父类方法的覆盖实现多态,也可以通过一个类中方法的重载实现多态,还可以将子类的对象作为父类的对象实现多态。,8.5.3 方法的重载,方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可,在这种情况下,该方法就叫被重载了,这个过程称为方法的重载。与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是类对自身已有的同名方法的重新定义。,8.5.3 方法的重载,在方法重载时,我们一定要注意重载时参数类型和个数匹配问题。Java在遇到这类问题时,总是会按照赋值规则的。赋值规则我们前面讲过,就是低精度的数值可以赋值给高精度的变量;而高精度的值却不能赋给低精度的变量。例如,我们可以将一个int值赋给一个double变量,却不能将一个double值赋给一个int变量,如图8.26所示。,8.5.4 对象引用实现多态,对象的引用型变量是具有多态性的,因为一个引用型变量可以指向不同形式的对象,即子类对象可以作为父类对象来使用。 我们可以举一个现实中的例子,在一个单位中,有职工(employee);职工中又有少数人是管理者(manager),管理者中又有一部分是领导。,8.6 小结,本章主要给大家介绍了Java中的继承和多态的概念,包括继承的基本机制、访问修饰符、方法的覆盖、多层继承和实现继承的方法。重点是对成员访问和覆盖方法的理解,难点是成员继承和方法覆盖以及如何实现多态的掌握和灵活运用。本章内容是Java面向对象的重点章节,希望大家努力掌握。,

java多态ppt_轻松学Java之继承与多态PPT课件.pptx相关推荐

  1. 轻松学java web_轻松学Java Web开发 pdf_IT教程网

    资源名称:轻松学Java Web开发 pdf 第1章 浏览器技术 2 1.1 HTTP协议 2 1.1.1 HTTP协议原理 2 1.1.2 HTTP请求格式 3 1.1.3 HTTP响应格式 3 1 ...

  2. 0基础学java有多难?自学Java和参加培训学Java的难易度对比分析!

    在一些知识问答平台上,我看到有很多在问"0基础学java有多难",如果你想0基础自学Java那可能会比较困难,但是如果选择报培训班进行学习,即便是0基础,学Java其实也并不难.所 ...

  3. [Java学习探讨]为什么学Java虚拟机的Java程序员更有价值?

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 [Java学习探讨]为什么学Java虚拟机的Java程序员更值钱? 曾经的我经常害怕处理与JVM相关的异常,对JVM的配置参数也一无 ...

  4. 什么是java?为什么要学Java? 学Java有什么用?

    肯定会有许多人或多或少都和我一样,当偶然在电视上看到程序员对着电脑飞快敲下一串代码,不禁为他们发出惊叹,想象着有一天自己也能这样.是的,有一天你也能这样!因为我已经实现了! 下面我们来看看到底什么是J ...

  5. java 抽象封装多态_java面向对象(封装,继承,多态,抽象,接口的定义和实现)...

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

  6. Java的三大特性:封装、继承、多态

    一.类的概念: 类一般包括两个部分:属性(成员变量)和方法(成员方法) 方法组成部分:修饰符(可选) 返回值类型(必须) 方法名(必须)参数列表(可选) package com.classTest.p ...

  7. 轻松学Java基础篇 小白必备!

    废话不多说,下面是小编为大家整理的Java在基础阶段的知识点路线图: 是不是看着这么多内容被吓到啦~别怕!继续往下看,经过小编的详细讲解,聪明的你肯定能学会~ 相信这里有很多学习java的朋友,小编整 ...

  8. Java的三大特性之封装、继承、多态-----最简理解

    根据网上其他地方的解释,以及查找资料,将自己对java三大特性的理解展示如下. 封装:(属性私有,set/get,在set中限定一些不安全的情况) 封装是指把一个对象的状态信息(也就是属性)隐藏在对象 ...

  9. java基础----(三大特性:封装,继承,多态)

    封装 将对象的转态信息隐藏在对象内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对内部信息的访问和操作. 封装的好处: 隐藏类的实现细节 使用者只能通过事先预定的方法来访问数据,从而可以在该 ...

最新文章

  1. 自2018年以来我不知道的事情-Dan Abramov
  2. 运行脚本时用SPOOL保存运行结果的问题
  3. oracle和sql server取第一条记录的区别以及rownum详解
  4. windows下的workon env
  5. python查看系统进程_在Python中获取操作系统的进程信息
  6. 12c rman中输入sql命令
  7. 电脑如何测网速_职场人必备?告别加班的软件,100%提升工作效率|电脑|程序员|mac...
  8. 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数
  9. Catalyst 6000 family Architecture
  10. e class connect.php,帝国CMS6.6程序剖析——e/class/connect.php
  11. 管理信息系统案例分析_万华集团 IT 规划案例分析
  12. 缠中说禅图解分析示范
  13. Dominant Resource Fairness: Fair Allocation of Multiple Resource Types
  14. 易中天∑品读汉代风云人物
  15. 本年盈余与预算结余差异表的分析(一)
  16. 石墨烯具有非常良好的光学特性,可能拥有一个非线性相移的光学非线性克尔效应-供应石墨烯/生态炭复合材料 聚苯乙烯/氧化石墨烯(PS/GO)复合微球 石墨烯-四氧化三铁(Fe_3O_4)微球复合材料
  17. 中文文字检测及识别(ORC)
  18. 诱人的Siri 开启人机交互的大门
  19. 在 macOS 上安装使用基于 ESP32C3 的 MicroPython
  20. 【Cucumber系列】Cucumber Hooks

热门文章

  1. Ubuntu 16.04安装Intel显卡驱动(解决Intel HD Graphics 630显卡驱动问题)
  2. 善待安达信的孩子zz
  3. 医学图像增强MATLAB程序,图像增强程序及评价指标含Matlab程序
  4. c语言注入dll能实现什么功能,教大家写一个远程线程的DLL注入,其实还是蛮简单的……………………...
  5. java 传递对象_关于Java对象作为参数传递是传值还是传引用的问题
  6. juniper防火墙清空配置恢复出厂设置命令
  7. dynamic crm心得
  8. 电子专业相关书籍-日本人写书-求实,精练.都是好书
  9. android搜索iphone蓝牙,苹果手机的蓝牙,该如何配对儿?看完这篇文章你就知道了...
  10. 区块链:拜占庭将军问题