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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 初学者学习编程语言应该学习哪一种?

    初学者学习编程语言应该学习哪一种?初学者学习编程语言应该学习哪一种?

    2022年4月22日
    58
  • redhat7.4配置本地yum源_centos7yum源的配置

    redhat7.4配置本地yum源_centos7yum源的配置1.定位到yum的配置文件[root@linuxprobe~]#cd/etc/yum.repos.d/2.查看是否有配置文件[root@linuxprobeyum.repos.d]#ls3.检查yum是否安装,以及安装了哪些依赖源并删除yum包[root@linuxprobeyum.repos.d]#rpm-qa|grepyum显示如下(根据各自情况,有可能不…

    2022年8月13日
    2
  • Double转BigDecimal小数点位数不一致问题「建议收藏」

    Double转BigDecimal小数点位数不一致问题「建议收藏」Doubledouble=1.23d;BigDecimalbd=newBigDecimal(double)时,出现转化得到的BigDecimaldb的小数点位数边长的问题。解决办法:BigDecimalbd=BigDecimal.valueof(double);

    2022年5月29日
    52
  • java actioncontext_关于struts2中ActionContext的实现原理

    java actioncontext_关于struts2中ActionContext的实现原理北京,雾霾天气阻止了今天的马拉松之行,蜗居一天。为一个问题“struts2如何保证ActionContext每次取的都是本次请求所对应的实例?”,给一个网友解释了半天。首先,我们知道,struts2和struts1的一个重要区别就是它进行了Action类和Servlet的解耦。而又提供了获取ServletAPI的其它通道,就是ActionContext(别跟我说还有个ServletActionC…

    2025年10月14日
    5
  • Unity3D 去色Shader实现[通俗易懂]

    Unity3D 去色Shader实现[通俗易懂]一般为了达到一些特殊的渲染效果会降低纹理所使用的颜色数量,不管是在后处理里实现还是对单个物体实现,思路都是差不多的。在unity里颜色值分量可以看成[0,1]的连续值,但是其实也只能取到256个值,因此可以直接把[0,1]的值无损的映射到256个格子里,然后再根据需要,对这256个格子进行一定的合并,例如[0,9]原来是10种颜色,现在用0代表的颜色代替。[10,19]用10这种颜色代替,依次类推。关键代码,_DiscreteLevel为需要用的颜色数量,我们这里使用向下取整,因此所有落在这个区间内的颜

    2022年9月27日
    3
  • ubuntu 安装教程(2016年qq版本v6.3.6)

    1、ctri+alt+t打开控制台2、输入:sudoadd-apt-repositoryppa:ubuntu-wine/ppa这是添加wine的库,照提示按回车添加稍等一下3、更新新软件中心输入:sudoapt-getupdate等待更新完毕后输入:sudoapt-getinstallwine1.7

    2022年4月17日
    34

发表回复

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

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