12-覆写

覆写

子类与父类产生继承关系后,实际上子类会继承父类中的全部定义,但这里面也有可能出现不合适的场景。如果发现父类中设计不足并且需要保留有父类中的方法或者属性名称的情况下就会发生覆写。

方法覆写

当子类定义了与父类方法名称相同,参数类型以及个数完全相同(跟父类方法一模一样)的时候,就称为方法的覆写。
调用的方法一定是被子类覆写过得方法,如果该方法没有被覆写过,会调用父类中提供的方法;
在子类进行方法覆写后如果想要继续调用父类中的方法,那么就必须使用"super.方法()"
只要是在子类中调用父类方法,一定在方法前追加有"super.方法()"

方法覆写限制

利用方法的覆写可以更好的扩充父类的功能,但是对于覆写也是有其自身要求的,被覆写的方法不能拥有比其父类更为严格的访问控制权限;
权限关系:public > default(不写) > private; (private权限最小,若父类为default,那么子类只能使用public或default定义)
Q:请解释Override和Overlording区别?
A:Overloading时返回参数是否相同

区别overloadingoverride
名称重载覆写
概念方法名称相同,参数的类型及个数不同方法名称、参数类型及个数、返回值相同
权限没有权限限制被覆写方法不能拥有更严格的控制权限
范围发生在一个类中发生在继承关系类中

在进行方法重载时并没有对返回类型作出限制,但好的习惯应该保持返回类型的一致;

属性覆盖

当子类定义了与父类相同名称的成员时候就称为属性覆盖。
如果此时按照标准开发属性进行了封装,这个时候实际上子类就和父类中的私有属性没什么关系了,即便名称相同,也只是相当于子类定义了一个新的属性;

Q:请解释super与this的区别?
A:

  • 程序类中使用this表示从本类查找所需的属性和方法,如果本类不存在则查找父类定义,如果使用super,则表示不查找子类直接查找父类;
  • this与super都可以进行构造方法的调用,但是this()调用的是本类构造,而super()是由子类调用父类构造,两个语句必须放在构造方法首行,所以不能同时出现;
  • this可以表示当前对象;

final关键字

final在程序中描述的是终结器的功能,在Java里面使用final关键字可以实现如下功能,定义不能被继承的类以及不能被覆写的方法、常量;
当子类继承了父类之后实际上是可以进行父类中方法的覆写的,但是若不希望某一方法被覆写,可使用final来定义;
在有一些系统开发中,可以使用1表示开关打开,0表示开关关闭,但如果现在直接操作0或者1,则会造成混乱,所以希望可以通过名称来使用;
final关键字中重要的应用技术:可以利用其定义常量,常量的内容一旦定义则不可修改;
常量往往都是公共的定义,为了体现共享的概念,往往使用全局常量的概念,使用public static final int key = 1;来定义;
**注:**定义全局常量的时候每一个字母必须大写;
在方法的时候也可以使用final来定义参数,此时表示一个常量的的概念;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值