继承

•继承是面向对象编程的三大特征之一,是一种基于已有类来创建新类的机制。由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类)。

•Java中每个类只允许有一个父类。语法如下:class extends

                                 

•Object类是所有类的直接父类或间接父类。

•根据访问权限修饰符的不同,子类可以继承父类中某些成员变量和方法,提高了代码的重用性,子类也可以添加新的成员变量和方法 :

  

•如果类被final修饰,则该类不能被继承:

•Java中已有的类(诸如Void、String、Class、Scanner、System、8种基本数据类型对应包装类等类)已经被final修饰,所以这些类不能被继承。

•如果父类拥有无参构造方法(无论隐式的还是显式的)且子类中的构造方法又没有明确指定调用父类的哪个构造方法,则子类中没有调用该子类其它构造方法使用super()隐式调用父类的无参构造方法,如下代码:

父类对子类构造方法的影响

父类成员变量被覆盖

•当子类成员变量和父类成员变量同名时,对子类对象来讲,父类的成员变量不能被子类继承(即子类的成员变量覆盖了父类的成员变量),此时称子类的成员变量隐藏了父类的成员变量。

•如果要在子类非static修饰的代码块或方法中使用被隐藏的父类成员变量可以通过super关键字实现。

重写

•子类可以继承父类方法,但有时从父类继承的方法在子类中必须进行修改以适应新类的需要,这种对父类方法进行改写或改造的现象称为方法重写或方法覆盖。父类方法在子类中重写使继承更加灵活。

•子类重写了父类的方法,则使用子类创建的对象调用该方法时,调用的是重写后的方法,即子类中的方法:

•如果要在子类非static修饰的代码块或方法中调用父类被重写的方法可以通过super关键字实现:

•Override注解可以判断当前方法是否重写了父类的某个方法,如果在方法上加上该注解没有出错,则说明重写了父类方法,否则没有重写父类方法。

•子类重写父类方法需满足以下条件:

方法名和参数列表:子类重写的方法和父类被重写的方法在方法名和参数列表(参数个数及其对应的参数类型相同)方面相同;

返回值类型:

1.如果父类被重写的方法没有返回值类型或者返回值类型为基本数据类型,则要求子类重写的方法的返回值类型和父类被重写方法的返回值类型相同;

2.如果父类被重写的方法返回值类型为引用数据类型,则要求子类重写的方法的返回值类型和父类被重写方法的返回值类型相同或是其子类。

•子类重写的方法不能缩小父类被重写方法的访问权限,子类重写方法的访问权限必须大于等于父类被重写方法的访问权限;

•父类中静态方法可以被子类继承,但却不能被子类重写;

•重写父类非静态方法时,重写后的方法不能添加static修饰;

•父类中被final关键字修饰的方法可以被子类继承,但却不能被子类重写;

•final关键字可以用来修饰类、方法和变量:

final修饰的类不能被继承。

final修饰的方法不能被重写。

final修饰的变量是常量,不允许二次赋值。

关键字super

•super使用原则:

super关键字可以调用父类的成员变量(super.属性)和方法(super.父类方法([参数列表]))。

子类构造方法中可以使用super关键字调用父类的构造方法:super([参数列表]);

super不能用于静态方法或静态代码块中。

多态

•如果编译时类型和运行时类型不一致时未必会出现所谓多态,如下例子:

•注意:父类类型的变量mammal指向子类创建的对象,但由于Whale类中没有重写该变量所调用的move方法,所以没有出现多态。

上转型对象

•子类实例化的对象赋值给父类声明变量,则该对象称为上转型对象,这个过程称为对象上转型,对应于数据类型转换中的自动类型转换:

•上转型对象不能操作子类新增的成员变量;不能调用子类新增的方法:

•上转对象调用父类方法,如果该方法已被子类重写,则表现子类重写后的行为特征,否则表现父类的行为特征。

•使用上转型对象调用成员变量,无论该成员变量是否已经被子类覆盖,使用的都是父类中的成员变量:

下转型对象

•可以将上转型对象再强制转换为创建该对象的子类类型的对象,即将上转型对象还原为子类对象,对应于数据类型转换中的强制类型转换。

•还原后的对象又具备了子类所有属性和功能,即可以操作子类中继承或新增的成员变量,可以调用子类中继承或新增的方法。

•注意:不可以将父类创建的对象通过强制类型转换赋值给子类声明的变量。

java多态简单例子6_Java_6、面向对象——继承和多态相关推荐

  1. python中的继承有什么特点_Python中 什么是面向对象-继承和多态

    文字有点长,对于不想看文字的朋友,可以去这里看视频,内容和这个文字一样的,视频可能更好理解 https://www.piqizhu.com/v/zaX9K4pd4GE 上一篇文章<python教 ...

  2. java 计算器类图_多态计算器(封装、继承、多态、简单工厂)

    一.封装 向对象程序设计中,一个非常重要的技术便是封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.这样做的好处在于可以使类内部的具体 ...

  3. java三大特性:封装、继承、多态

    2019独角兽企业重金招聘Python工程师标准>>> 至今记得若干年前,去面试排了半天的队,到我的时候,面试官问我的第一个问题,java三大特性是什么~我支支吾吾的没有答全~0.0 ...

  4. 初步理解Java的三大特性——封装、继承和多态

    声明:整理自网络,如有雷同,请联系博主处理 一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被 ...

  5. java封装的特性,java的三大特性(封装、继承、多态)

    Java语言的三大特性即是:封装.继承.多态 首先先简单的说一下其3大特性的定义: 封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别.将抽象得到的数据和行为(或功能 ...

  6. Java基础篇:封装、继承、多态三大特性

    目录: 一.Java三大特性之:封装 二.Java三大特性之:继承 三.Java三大特性之:多态 一.Java三大特性之:封装 1.什么是封装: 封装,就是将数据和基于数据的操作封装在一起,数据被保护 ...

  7. Java三大特性:封装,继承与多态

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/84592274冷血之心的博客) 目录 (一)封装 封装的定义 封装 ...

  8. java三大特征之封装,继承,多态浅析

    java三大特性分别是封装,继承,多态. 封装:将对象的状态信息隐藏在对象内部,而外部无法直接访问,必须通过对象来访问(直观点就是将成员变量及方法写在class xxx{ }里面) 比如Person类 ...

  9. 【JAVA SE】第七章 继承和多态

    第七章 继承和多态 文章目录 第七章 继承和多态 一.继承 1.概念 2.继承的特性 2.继承关键字 3.构造器 4.子类重写父类方法的规则 二.多态 1.概念 2.多态的优点 3.多态存在的三个必要 ...

最新文章

  1. Java中正则Matcher类的matches()、lookAt()和find()的差别
  2. POJ 1944 - Fiber Communications
  3. Mysql学习笔记(三)运算符和控制流函数
  4. edger多组差异性分析_简单使用DESeq2/EdgeR做差异分析
  5. ubuntu18.04 出现 Command 'ifconfig' not found 问题的解决办法
  6. 龙头地位无可撼动!腾讯占全球游戏市场15% 连续6年登营收榜首
  7. springboot细节挖掘(监听器)
  8. 不使用网线就无法将两台计算机连接成网络,不通过路由器将两台计算机连接到网络的方法不止一种-如何将两台计算机连接到局域网...
  9. [渝粤教育] 西南科技大学 西方现代派文学 在线考试复习资料
  10. UML图箭头和实线虚线到底什么意思
  11. mysql 事件计划区别_【转】mysql 计划事件
  12. Excel表格快速复制公式到最后一行,无需拖拽!
  13. TB6612FNG与直流电机控制教程
  14. Java坑人面试题系列: 比对while与for循环(中级难度)
  15. 硬件工程师成长之路(0)----认识元件
  16. android集成语音功能
  17. java 进程假死原因_分析java进程假死状况
  18. 你与chatGPT有什么区别?
  19. 使用三丰云免费云主机安装cyberpanel面板并创建wordpress站点
  20. 便携式电子血压计【Part I】

热门文章

  1. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作
  2. 微软好绝情:Windows 7再无重大更新!
  3. 三、openstack安装之Glance篇
  4. openssl私有ca创建
  5. nginx telnet sshd
  6. EIGRP的等价负载均衡
  7. Command模式的实践
  8. python虚拟环境
  9. 计算机科学与技术类高水平国际学术刊物,莘莘学子 | 计算机科学与技术学院本科生薛传雨在国际期刊上发表高水平学术论文...
  10. 201803考试批次2C 程序设计语言,201803考试批次2可视化程序设计(VB)D卷