打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java之重写


推荐阅读:


Java 重写(Override)


1.重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!


2.重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。


3.重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常 IOException(后期章节会讲到),但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。


在面向对象原则里,重写意味着可以重写任何现有方法。实例如下:

在上面的例子中可以看到,尽管dog属于Animal类型,但是它运行的是Dog类的sleep方法。


这是由于在编译阶段,只是检查参数的引用类型。然而在运行时,Java虚拟机(JVM)指定对象的类型并且运行该对象的方法。


因此在上面的例子中,之所以能编译成功,是因为Animal类中存在sleep方法,然而运行时,运行的是特定对象的方法。也就是dog类中的sleep方法。


super关键字


以上使用了super关键字 。super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。


除了Object类之外其他所有类的构造方法第一句总是super(…)


任何类的构造方法中,若是构造方法的第一行代码没有显式的调用super(...);那么Java默认都会调用super(); 所以你这里的super(); 加不加都无所谓。


例如:Dog类重写了父类的sleep方法,那么在子类中还想调用父类方法怎么办呢?

只需要在Dog类中的任意方法中使用super.sleep()即可。


Object类


Object类是所有Java类的根基类,如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类 ,并且继承了该类的所有方法,以下的方法大家简单记住几个即可。


toString方法:其返回值是 String 类型,描述当前对象的有关信息。该方法一般都会在子类重写。


equals方法:提供定义对象是否“相等”的逻辑。x.equals ( y ) 当 x 和 y是同一个对象的应用时返回 true 否则返回 false。


有兴趣的大家可以去看看这2个方法的源码非常简单。


后续需要使用在讲解。


重写与重载之间的区别


首先看一张图

重点

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。


(1)方法重载是一个类中定义了多个方法名相同,而它们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。


(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。


(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。


习题:

动物类:方法(睡,跑)

企鹅类:继承动物类并且重写跑的方法打印“一晃一晃的跑”

老鼠类:继承动物类并且重写睡的方法打印“趴着睡觉”

答案在公众号输入“继承重写”


公众号资源免费分享!!!

2017年某培训班最新视频+几十个项目免费分享 公众号输入“我要视频”


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java重载与重写的区别
java的重载与重写
java学习总结-高级语言特性-封装,继承,多态
Java基础笔试题
深入理解java的构造器
Java面向对象详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服