Java基础第十二天 - 继承,重写

本文介绍了Java中的继承机制,包括单继承特点、构造函数调用、this和super的作用,以及重写的概念和final关键字在属性、方法和类上的应用。着重说明了子类如何继承父类成员并可能进行重写,以及final关键字对可重写性和可变性的限制。
摘要由CSDN通过智能技术生成

一、什么是继承

当多个类中有相同的属性或者方法时,我们将这些相同的方法和属性集中写在一个新的类里面,其他类(子类,派生类)可以使用这个类(父类,超类)中的所有非私有的成员变量和方法,这就叫做继承。

继承的特点

继承首先只能单继承,不能多继承,

继承的子类可以继承父类的父类。

父类的所有非私有方法和属性子类都可以继承。

子类对父类的构造方法只有调用,不能继承。

子类和父类有同名方法或属性,优先访问子类的

 注意:子类只能继承父类的非私有属性和方法,构造方法也不能继承,只能调用。

 继承中 子类的成员方法和属性与父类不同,直接调用即可,如果相同,由于就近原则,会优先调用子类的方法和属性,如果想要调用父类的方法和属性,需要用 super 关键字来调用。

在子类的所有构造方法中,每行的第一句都隐式调用super();及调用了父类的无参构造方法。所有,在调用子类实例化对象时,父类优先与子类初始化。

this和super

this代表的是当前对象,super是父类的对象

this解决的是局部变量隐藏成员的问题。

super解决的是子类隐藏父类成员的问题。

this在调用成员时语法    this.成员名;      this.方法名();   

this在调用其他构造方法时       this();    ()内写其他构造方法的参数名     不写默认调用空参构造

super在调用父类成员时语法    super.成员名;     super.方法名();

super在调用父类构造方法时       super();    ()内写父类构造方法的参数名     不写默认调用空参构造

继承中成员变量的关系

在继承中,子类可以继承父类的所有非私有的成员变量。

如果子类中有和父类成员变量相同的,会优先执行子类的  具体为  子类成员变量>父类成员变量

继承中成员方法的关系

在继承中,子类可以继承父类所有非私有的成员方法。

如果子类中有和父类同名的成员方法,会优先执行子类的成员方法,具体为 子类成员方法>父类成员方法。


当子类中的成员方法中的   形式参数(局部变量),和子类的成员变量,父类的成员变量相同时,执行顺序大小时,形式参数>子类成员变量>父类成员变量

所有,我们要想使用子类成员变量,需要用  this.局部变量名 = 成员变量名 ;来指定是子类的成员变量;;;;;;; 我们要想使用父类的成员变量,需要用  super.变量名 = 变量名 来定义。

继承中构造函数的特点

在继承中,子类不会继承父类的构造函数,只能调用父类的构造函数来实现父类的初始化。

在子类的各个构造函数(无参,有参)都在第一句隐式调用了父类的无参构造函数。


当我们显示的调用父类的构造函数时,就不会自动调用父类无参的构造函数。但如果父类没有这个构造函数,比如没有在父类显示定义有参的构造函数,调用会出错,解决方法就是在父类写一个有对应参数的。

二、重写

方法的重写是对子类继承的成员方法才有的概念,子类继承父类的方法后,再次定义和父类成员方法所有都相同,出了方法体不同的方法,这个方法就是父类对应方法的重写。

父类的私有方法不能重写,重写后访问等级不能低于父类。建议同级。

重写是多态的前提。

final关键字

final是最终的意思,它可以修饰 属性,方法,类。

final修饰的类为最终类,最终类没有子类。

final修饰的方法为最终方法,最终方法不能被重写。

final修饰的属性:1.为基本类型:此时修饰的属性为最终属性,为常量;

                            2.为引用类型:此时修饰的属性为最终地址;引用类型的地址不变,但里面的内容可变。

  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值