专栏首页Java患者Java基础知识(三)

Java基础知识(三)

继承

继承的好处

  • 提高了代码的复用性
  • 提高了代码的维护性
  • 让类与类之间产生了关系,是多态的前提

继承弊端

  • 类的耦合性增强了
  • 开发的原则:高内聚,低耦合
  • 耦合:类与类的关系
  • 内聚:就是自己完成某件事情的能力

继承特点

  • Java只支持单继承
  • Java支持多层继承(继承体系)
  • 如果想用这个体系的所有功能用最底层的类创建对象
  • 如果想看这个体系的共性功能,看最顶层的类

继承注意事项

  • 子类只能继承父类所有非私有的成员(成员方法和成员变量)
  • 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
  • 不要为了部分功能而去继承

继承中成员变量的关系

  • this:代表当前对象的引用,谁来调用我,我就代表谁
  • super:代表当前对象父类的引用
  • this和super的使用区别
    • this.成员方法, 调用本类的成员方法, 也可以调用父类的方法
    • super.成员方法 调用父类的成员方法
    • this(...) 调用本类的构造方法
    • super(...) 调用父类的构造方法
    • this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
    • super.成员变量, 调用父类的成员变量
    • 调用成员变量
    • 调用构造方法
    • 调用成员方法

继承中构造方法的关系

  • 子类中所有的构造方法默认都会访问父类中空参数的构造方法
    • 子类的构造方法通过super(...)去显式调用父类的带参构造方法
    • 子类的构造方法通过this()/this(...) 调用本类的其他构造方法,但是子类的其他构造方法中一定会有一个去访问了父类的带参构造方法
    • 让父类提供无参构造
    • 因为子类会继承父类中的数据,可能还会使用父类的数据
    • 所以,子类初始化之前,一定要先完成父类数据的初始化.
    • 其实每个构造方法的第一条语句默认都是super() Object类最顶层的父类
    • 如果父类没有无参构造方法,子类怎么办?

继承中成员方法关系

  • 什么是方法重写
    • 子父类出现了一模一样的方法(注意:返回值类型可以是子父类)
  • 方法重写的应用
    • 当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法.这样,既沿袭了父类的功能,又定义了子类特有的内容.
  • 注意事项
    • 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,静态只能覆盖静态
    • 最好就一致
    • 因为父类私有方法子类根本无法继承
    • 父类中私有方法不能被重写
    • 子类重写父类方法时,访问权限不能更低
    • 父类静态方法,子类也必须通过静态方法进行重写
  • 方法重写面试题
    • Override和Overload的区别? Overload能改变返回值类型吗?
    • override(重写):发生在java的继承中,当子类需要使用和父类方法名相同,但实现过程不同的方法时,就会用到重写。需要注意的是重写的方法的参数列表必须与弗雷的被重写的方法的参数列表完全一直,但返回值类型可以是父类被重写方法返回值类型的衍生类或者是相同类.
    • overload(重载) : 重载发生在同一个类中,同一个类中需要用相同的方法名但实现过程不同的时候用到重载.重载是相同方法名但参数列表不同,即可实现重载.常用的例如类的构造方法的重载.
    • overload能改变返回值类型,只看参数列表

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础知识三问—百度真题

    对于java,大家应该熟悉的不能再熟悉了。每天都在用,每天都在写,那么你是否对java基础有足够的了解呢?有的人说能写出代码,完成功能就够了,还了解那些基础知识...

    码上积木
  • Java基础知识(十三)--线程池

    用户7386338
  • 第一阶段-Java基础知识:【第三章 方法和数组】

    如果我们想要在一个类中实现很多功能,但是如果我们想要,多次使用,某一个功能,显然我们需要重复书写这个功能的代码多次,显然,这是不明智的。所以方法就来拯救我们了。

    BWH_Steven
  • Java基础知识讲解(三)简单的键盘输入和输出

    接下来还会进行更多有趣的学习,学习代码 就是一个不断重复的过程,重复是最好的老师,绝实用,我们只有让指尖留一种感觉才会有一种愉悦感。

    Weaster
  • JAVA基础知识

    Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。 Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。  Java 被设计成允许应用程...

    用户3003813
  • java基础知识

    Vector、Stack、HashTable、ConcurrentHashMap、Properties

    仇诺伊
  • ThinkPHP基础知识(三)

    TP调试模式: 入口文件index.php中: define('APP_DEBUG',true); //默认为false,表示关闭...

    benny
  • Git基础知识(三)

    为了能进行项目协作,所以我们需要将仓库托管在一个公共的地方。远程仓库是指托管在因特网或其他网络中的你的项目的版本库。

    zx钟
  • Linux基础知识(三)

    记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;

    我被狗咬了
  • java基础知识01

    正所谓万丈高楼平地起,有了扎实的基础才能进阶更深奥的课程,才能让你后面的走得更轻松,学Java亦是如此!所以千万不能忽略基础的重要性,下面一起来温习一下那些容易...

    贪挽懒月
  • java基础知识02

    1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。用length()方法获取长度。

    贪挽懒月
  • java(一)基础知识

    西西嘛呦
  • Java基础知识(二)

    ​ 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Sma...

    shimeath
  • Java基础知识(一)

    JRE: java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。

    shimeath
  • Java基础知识(二)

    用户7386338
  • java基础知识----循环

    小小咸鱼YwY
  • Java相关基础知识

    类名 对象名; 声明对象后,内存空间还不存在对象实体; 比如 Person huasheng;

    meihuasheng
  • Java GC的基础知识

    最近碰到一些应用问题,涉及到了Java中的垃圾回收机制,Garbage Collection,简称GC,这其中的学问,还是不少的,有很多东西需要学习。

    bisal
  • JAVA基础知识点(一)

    小小咸鱼YwY

扫码关注云+社区

领取腾讯云代金券