面向对象5

继承2

super关键字的使用:

若父类的某些成员不满足子类的需求,可以定义一个与父类一样的成员,子类访问的是自己的成员,如果想用父类的则需要用super关键字;

与this相对应;

super用来访问父类中定义的属性,调用父类中定义的成员方法,在子类构造器中调用父类构造器;

注意:
子父类出现同名成员可以用super划分,super的追溯不止局限于直接父类;
this代表本类对象的引用/在当前类操作,super代表父类的内存空间的标识/子类操作;
两者不能同时使用,因为他们都得放在构造器最上边;

父类有构造器,子类必须实现它(也就是说要有一个格式上一致的构造器),子类默认会使用父类的构造器;
比如://隐式调用
子类父类都不定义构造器,那么子类不会报错,因为它俩默认的都是无参构造器;
如果父类定义了有n个参数的构造器,子类没定义,或者和父类的参数个数不同,都会报错,因为构造器不匹配;
如果父类定义了多个构造器,其中有一个无参的,那么子类不定义构造器也不会报错,因为子类的构造器只需与父类的构造器有一个匹配即可;

注:
子类中所有构造器都会默认访问父类的空参构造器
若父类中没有空参构造器时,子类的构造器必须同过this(参数列表)或super(参数列表)语句来指定调用本类或父类中对应的构造器,且必须放在构造器第一行;
若子类构造器中为显式调用父类或本类的构造器,且父类中又没有无参构造器,则会编译出错;

方法的重写和覆盖

成员变量的隐藏:
在子类的创建中,若出现了与超类相同的成员变量,则超类中的成员变量被子类中的成员变量所隐藏;
成员方法的覆盖:
在子类的创建中,如果出现了与超类中有相同名字,同参数以及同返回值类型(可以是子类)的成员方法,则超类中成员方法被子类中的成员方法所覆盖;

方法重写:
子类中可以根据需要对父类中继承来的方法进程改造;要求:
1.重写方法必须和被重写方法具有相同的方法名,参数列表;
2.重写的方法返回值类型不能大于被重写的方法的返回值类型;如果被重写方法类型是一个类的话,重写方法的类型不可以是其类型的父类;//01:14:55
3.重写方法使用的访问权限不能小于被重写方法的访问权限;
4.子类不能重写父类声明为private权限的方法;
5.子类方法抛出的异常不能大于父类被重写方法的异常;
注意:子父类中同名方法(非重写)须同时为static或同时非为static;

方法覆盖:
public>protected>缺省>private
与方法过载不同,方法过载是一个类中具有相同名字的方法,他们之间具有不同参数;
覆盖不代表不能用父类的方法,只是需要用 super来访问它;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值