隐藏和覆盖

全部域、方法都被继承。
对于所有方法,权限都不可以变的更严格,这个和域不一样。


一、域可以被隐藏(子类定义同名域,权限、类型无要求)【隐藏 = 定义同名域】
<1>不隐藏的时候,在权限范围位置调用即可【private域较特别,即使在权限范围代码里,子类对象也需要转型才可直接调用】
<2>若隐藏,根据对象的(声明)类型调用


二、方法
覆盖:子类定义同签名方法,权限不能更严格,返回类型要匹配【基类方法返回类型的子类】;
  若覆盖,按动态绑定规则【P158】调用。
隐藏:子类定义同签名方法,修饰、类型无要求【private】,修饰、类型要一致【static】,具体如下:
  <1>不隐藏 <2>隐藏 ;都和域类似。
1.private方法,可以隐藏【只要是private,同时被final或者static修饰也行】
2.static方法,只能以覆盖的规则重定义,且还为static(隐藏),但不可以用@override
3.final方法,不可以隐藏、覆盖。
4.构造器,不能同签名。
  以上4种为静态绑定;而动态绑定的方法通常只用public\protected\默认,来修饰


三、补充关于静态方法和域
<1>若子类没有进行重定义隐藏,可以用B.field, B.method()调用A中定义的static域和方法
<2>若子类进行了重定义隐藏,上述方式调用的是在B中定义的static域和方法。【如果重定义的域不是static,这个引用会报错】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值