目录

  • 继承
  • 继承概述、使用继承的好处
    • 什么是继承
    • 使用继承的好处
    • 继承后子类的特点?
    • 案例演示
  • 继承的设计规范、内存运行原理
    • 继承的设计规范
      • 为什么
    • 内存运行原理
  • 继承的特点
    • 子类是否可以继承父类的构造器?
    • 子类是否可以继承父类的私有成员?
    • 子类是否可以继承父类的静态成员?
    • 继承的特点
    • Object特点
  • 继承后:成员变量、成员方法的访问特点
    • 在子类方法中访问成员(成员变量、成员方法)满足:**就近原则**
    • 如果子父类中,出现了**重名的成员**,会优先使用子类的,**此时如果一定要在子类中使用父类的怎么办?**
  • 继承后:方法重写
    • 方法重写的应用场景
    • 案例
    • @Override重写注解
    • 方法重写注意事项和要求
    • 总结
  • 子类构造器的特点
    • 为什么?
    • 怎么调用父类构造器的?
      • 执行结果
  • 子类构造器访问父类有参构造器
    • super调用父类有参数构造器的作用
    • 如果父类中没有无参数构造器,只有有参构造器,会出现什么现象呢?
      • 错误提示
    • 如何解决?
  • this、super使用总结
    • this和super详情
    • this(...)和super(…)使用注意点:
    • 案例演示

继承

继承概述、使用继承的好处

什么是继承

  • 继承就是java允许我们用extends关键字,让一个类和另一个类建立起一种父子关系。

  • Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起父子关系。
public class Student extends People {}
  • Student称为子类(派生类),People称为父类(基类 或超类)。
  • 作用:当子类继承父类后,就可以直接使用父类公共的属性和方法了

使用继承的好处

  • 可以提高代码的复用性。
  • 提高代码复用性,减少代码冗余,增强类的功能扩展性。

继承后子类的特点?

  • 子类 继承父类,子类可以得到父类的属性和行为,子类可以使用。

  • Java中子类更强大

案例演示

继承的设计规范、内存运行原理

继承的设计规范

  • 子类们相同特征(共性属性,共性方法)放在父类中定义
  • 子类独有的的属性和行为应该定义在子类自己里面。

为什么

  • 如果子类的独有属性、行为定义在父类中,会导致其它子类也会得到这些属性和行为,这不符合面向对象逻辑。

内存运行原理

继承的特点

  1. 子类可以继承父类的属性和行为,但是子类不能继承父类的构造器。

  2. Java是单继承模式:一个类只能继承一个直接父类。

  3. Java不支持多继承、但是支持多层继承。

  4. Java中所有的类都是Object类的子类。

子类是否可以继承父类的构造器?

  • 不可以的,子类有自己的构造器,父类构造器用于初始化父类对象

子类是否可以继承父类的私有成员?

  • 可以的,只是不能直接访问。

  • 例如 :就像你从别人那里继承了一个保险柜的密码 , 但是你给密码忘记了 , 但是那个密码的地址一直在你的脑海中保存 , 只不过你个忘记罢了

子类是否可以继承父类的静态成员?

  • 个人认为:子类不能继承父类的静态成员。(共享并非继承)
  • 只能共享

这个是通过类去访问的,并非通过对象 , 所以只能说是共享

继承的特点

Object特点

继承后:成员变量、成员方法的访问特点

在子类方法中访问成员(成员变量、成员方法)满足:就近原则

  • 先子类局部范围找

  • 然后子类成员范围找

  • 然后父类成员范围找,如果父类范围还没有找到则报错。

如果子父类中,出现了重名的成员,会优先使用子类的,此时如果一定要在子类中使用父类的怎么办?

  • 可以通过super关键字,指定访问父类的成员。

继承后:方法重写

  • 在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。

方法重写的应用场景

  • 当子类需要父类的功能,但父类的该功能不完全满足自己的需求时。

  • 子类可以重写父类中的方法。

案例


package com.north.d9_extends_override;/*** @author North* @date 2022/10/8 19:53*/
public class Test {public static void main(String[] args) {// 目标 : 理解方法重写NewPhone oppo = new NewPhone();oppo.call();System.out.println("------------------------------");oppo.sendMessage();}
}class Phone {public void call() {System.out.println("打电话");}public void sendMessage() {System.out.println("发短信");}
}class NewPhone extends Phone {@Overridepublic void call() {super.call();System.out.println("打视频电话");}@Overridepublic void sendMessage() {super.sendMessage();System.out.println("发一些有趣的图片");}
}

@Override重写注解

  • @Override是放在重写后的方法上,作为重写是否正确的校验注解。

  • 加上该注解后如果重写错误,编译阶段会出现错误提示。

  • 建议重写方法都加@Override注解,代码安全,优雅!

方法重写注意事项和要求

  • 重写方法的名称、形参列表必须与被重写方法的名称和参数列表一致。

  • 私有方法不能被重写。

  • 子类重写父类方法时,访问权限必须大于或者等于父类 (暂时了解 :缺省 < protected < public)

  • 子类不能重写父类的静态方法,如果重写会报错的。

总结

子类构造器的特点

为什么?

  • 子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。

  • 子类初始化之前,一定要调用父类构造器先完成父类数据空间的初始化。

怎么调用父类构造器的?

执行结果

子类构造器访问父类有参构造器

super调用父类有参数构造器的作用

如果父类中没有无参数构造器,只有有参构造器,会出现什么现象呢?

错误提示

如何解决?

this、super使用总结

this和super详情

this(…)和super(…)使用注意点:

  • 子类通过 this (…)去调用本类的其他构造器,本类其他构造器会通过 super 去手动调用父类的构造器,最终还是会调用父类构造器的。

  • 注意:this(…) super(…) 都只能放在构造器的第一行,所以二者不能共存在同一个构造器中。

案例演示

/**使用 this()如果学生不填写学校 , 默认这个对象的学校名称*/public Student(String name) {// this() 借用本类兄弟的构造器this(name , "山崖书院");}public Student(String name, String schoolName) {this.name = name;this.schoolName = schoolName;}```

015——继承(来 , 看看Java中的继承关系)相关推荐

  1. java 的继承_关于java中的继承

    我们都知道Java中的继承是复用代码.扩展子类的一种方式,继承使得Java中重复的代码能够被提取出来供子类共用,对于Java程序的性能以及修改和扩展有很大的意义,所以这是一个非常重要的知识点. 那么对 ...

  2. java中抽象类继承抽象类_用Java中的抽象类扩展抽象类

    java中抽象类继承抽象类 示例问题 当我创建Java :: Geci抽象类AbstractFieldsGenerator和AbstractFilteredFieldsGenerator我遇到了一个不 ...

  3. java中抽象类继承抽象类_Java中的抽象类用示例解释

    java中抽象类继承抽象类 Abstract classes are classes declared with abstract. They can be subclassed or extende ...

  4. java继承总结_JAVA笔记:Java中的继承总结

    继承:在Java中使用extends关键字来实现类的继承  ,extends意思就是派生,所以子类也叫派生类,继承的主要目的是扩展类的内容 操作格式: class A{}; class B exten ...

  5. java中的继承(一)

    在java中,所有的类都有一个默认的父类Object,即使我们没有显式的去继承这个类.在Object类中定义了一些方法,其中有几个方法是我们必须掌握的,比如equals方法,hashCode方法,wa ...

  6. Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟。

    Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟. 前言 动物在拥有自己本身所具有的特征的同时,还应该具有所在大类所具有的动物特 ...

  7. Java中的继承 与 多态(中)

    先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题,  1.继承是什么   2.super关键字   3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...

  8. 解析java中的继承

    解析java中的继承 1 含义 在符合当代社会的约定俗成的逻辑的情况下,很多类具有相同的属性和方法,我们这些共有的属性和方法抽象成一个类后,通过extends关键字使得很多类与抽象成的类建立父子关系, ...

  9. 利用JAVA中关于继承的相关知识求得圆柱体体积并输出

    利用JAVA中关于继承的相关知识求得圆柱体体积并输出 Write a program: 1)Define a Circle class and a Cylinder class, which is d ...

最新文章

  1. 用dedecms自定义表单创建简易自助预约系统
  2. ElasticSearch探索之路(五)集群与分片:选举、动态更新、近实时搜索、事务日志、段合并
  3. 楼兰图腾(权值线段树)
  4. Sharepoint Designer 2007 Workflow
  5. iframe标签里面的页面元素只读
  6. 微信小程序代码大全 - 小程序开发福利
  7. eigen求特征值和特征向量
  8. 基于Android Tv制作一个Tv桌面(三)
  9. 事业单位考试计算机专业知识题库,计算机考试题库:计算机考试模拟练习题(201)...
  10. 逆势获投1亿,火眼金睛下的云适配BRaaS新模式引关注
  11. 用python画盒图_[519]matplotlib(四)|Python中用matplotlib绘制盒状图(Boxplots)和小提琴图(Violinplots)...
  12. 1.PCIe扫盲——PCIe简介
  13. 电信10兆指的是多少Mbps
  14. 数据结构——图-基本知识点(第七章)
  15. wafw00f--一款基于python识别网站WAF的工具
  16. CreateCompatibleDC CreateCompatibleBitmap SelectObject详解
  17. 【找规律】codeforces 710 F
  18. 22款受欢迎的计算机取证工具
  19. 微信公众号被动消息回复实现
  20. java 字节 字符

热门文章

  1. 【奖池启用禁用】测试场景(一)
  2. spring无法使用@PostConstruct、@PreDestory、@Resource注解
  3. 小觅双目摄像头固件升级失败的解决办法
  4. 以颐和园为例,简单操作生成一个导游应用
  5. java 弹力球_pygame实现弹力球及其变速效果
  6. 绘图杂记【8】echarts象形图,圆环图
  7. 【预测模型-ElM分类】基于松鼠算法优化ElM神经网络实现数据分类附matlab代码
  8. 【深度学习笔记】cs231n neural networks 3
  9. 凯立德2014秋季机车版C1204-C7K05-3323J0L懒人包 (5.0版)
  10. 数据分析师,到底要懂多少业务?