Java继承

Java继承一:继承的概述1.继承的定义继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。–注:父类又称为超类或者基类。子类又称为派生类!2.继承的格式通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:class父类{…}class子类extends父类{…}二、关于继承之后的成员变量1.当成员变量不重名如果子类父类中出现不重名的成员变量,这时的访问是没有影

大家好,又见面了,我是你们的朋友全栈君。

一:继承的概述
1.继承的定义
继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
–注:父类又称为超类或者基类。子类又称为派生类!

2.继承的格式
通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:
class 父类 {


}
class 子类 extends 父类 {


}
二、关于继承之后的成员变量
1.当成员变量不重名
如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。
–注:Java只支持单继承,不支持多继承,也就是说一个类只能有一个父类,不可以有多个父类

2.成员变量重名
如果子类父类中出现重名的成员变量,这时的访问是有影响的。
如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。
当子父类中出现了同名的成员变量时或者在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字, 使用格式 super.父类成员变量名

3.当成员变量时非私有时:子类中可以直接访问。
4.当成员变量时私有:子类是不能直接访问的。

那如何访问父类私有变量呢?
在父类中提供公共的getXxx方法和setXxx方法就可以访问父类的私有成员变量了。

三:关于继承之后的成员方法
1.成员方法不重名
如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。
对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。

2.成员方法重名 【方法重写】
成员方法重名大体也可以分两种情况:
1、方法名相同返回值类型、参数列表却不相同(优先在子类查找,没找到就去父类)
2、方法名、返回值类型、参数列表都相同,就是重写(Override)
—注:重写:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
–注:隐藏和覆盖是不同的,隐藏是针对于成员变量和静态方法的,而覆盖是针对普通方法的。

最后重写必须注意这几点:
1、方法重写时, 方法名与形参列表必须一致。
2、子类方法覆盖父类方法时,必须要保证子类权限 >= 父类权限。
3、方法重写时,子类的返回值类型必须要 <= 父类的返回值类型。
4、方法重写时,子类抛出的异常类型要 <= 父类抛出的异常类型。

四:关于继承之后的构造方法
构造方法的名字是与类名一致的,所以子类是无法继承父类构造方法的。 构造方法的作用是初始化成员变量。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认会在第一句代码中添加super(),表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。
super() 不写也默认存在,而且只能是在第一句代码中。

–重载:函数的方法参数个数或者类型不一致,称为方法的重载
从含义上说,只要求参数的个数或者参数的类型不一致就说两个函数式重载函数,而至于返回值是否一样,没关系。同时,重载可以发生在同一个类中也可以发生在继承关系中。
–重写(覆写):对一个方法的重写必须发生在具有继承关系的两个类中,即子类对父类方法的重写。
它要求两个方法的参数个数和类型以及返回值类型都必须一致,这样才称为方法重写。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156464.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux杀死进程详解「建议收藏」

    linux杀死进程详解「建议收藏」1.kill作用:根据进程号杀死进程用法:kill[信号代码]进程ID举例:[root@localhost~]#psauxf|grephttpd注意:kill-9来强制终止退出举例[root@localhost~]#psaux|grepgaim或

    2022年9月29日
    0
  • google scholar_google

    google scholar_google利用GoogleScholar进行文献检索

    2022年10月11日
    0
  • 【打一局王者荣耀掉星的时间,我制作了一款支持 重力感应 的 3D动态壁纸】

    【打一局王者荣耀掉星的时间,我制作了一款支持 重力感应 的 3D动态壁纸】正在兢兢业业的当一个打工仔,有一个小伙伴问我能不能用Unity制作3D动态壁纸。我一寻思应该问题不大,因为之前用Unity简单制作过一个PC端的桌面宠物,开启Unity背景穿透模式能有一个壁纸的效果。但是仔细一想在手机端也这样做的话好像不能直接套用…所以在网上搜索了一下有没有什么简单可行的方法。然后我发现Unity有一款专门用来做动态壁纸的插件:uLiveWallpaper所以本篇文章就来使用这款插件制作一款最基础的3D重力感应动态壁纸,下面一起看看如何制作吧~

    2022年5月25日
    146
  • python执行测试用例_测试用例是由什么组成

    python执行测试用例_测试用例是由什么组成前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月29日
    3
  • 与一对加拿大华人夫妇的故事

    与一对加拿大华人夫妇的故事

    2022年1月23日
    45
  • 计算机三级(数据库)备考题目知识点总结

    计算机三级(数据库)备考题目知识点总结计算机三级(数据库)备考题目知识点总结刷题所遇到的知识点总结考后总结刷题所遇到的知识点总结以下都是我在刷题时遇到的常考的知识点,供复习时做参考。1.DBAS需求分析阶段的一项重要工作是分析DBAS应具有的性能指标,主要包括:①数据操作响应时间,或数据访问响应时间;②系统吞吐量,即指系统在单位时间内可以完成的数据库事务或查询的数量;③允许并发访问最大用户数;④每TPS(PriceperTP…

    2022年6月21日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号