重写XXX()方法时,第一句代码super.XXX()有什么用?

蓝大巨 2016-02-18 03:06:30
我看到很多重写onXxx()方法的方法体都有一句super.onXxx(),而有时候我发现同样是这个方法,却没有这一句代码,而且也没有出错。请问这是为什么?平时的时候又怎么知道要不要这句代码?谢谢
...全文
609 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝大巨 2016-02-23
  • 打赏
  • 举报
回复
引用 7 楼 wei220000 的回复:
引用 5 楼 lankun1234 的回复:
[quote=引用 4 楼 wei220000 的回复:] 有一些父类,他允许被继承,但是他本身有一些属于自己的函数,这些函数也允许覆盖,但是函数中有一些自己必须要执行的步骤,如果不执行就会导致类错误,所以我们在覆盖这些函数的时候,必须调用super.xxx。让父函数正常执行,才能执行我们覆盖后添加的内容。
那怎么知道究竟要不要调用super.XXX呢?如果调用没出错,没调用也没出错,那怎么办?
@CallSuper在父类上有这个标示[/quote]这句话才是精华啊,这才是我想要的答案。谢谢。也谢谢所有回答的朋友
蓝大巨 2016-02-23
  • 打赏
  • 举报
回复
引用 8 楼 Mailbomb 的回复:
这个是调用父类中被覆盖的方法的,有些方法要求必须调用
我知道他的作用,为什么有些必须调用,有些就不需要呢
小牛很菜 2016-02-22
  • 打赏
  • 举报
回复
因为这样的父类有各种各样的子类,而且每个子类都有相同功能的函数,如果不在父类中实现,在各个子类中实现,那样就增加了代码的冗余度,为了代码简化,就在父类中写。
网络咖啡 2016-02-21
  • 打赏
  • 举报
回复
这个是调用父类中被覆盖的方法的,有些方法要求必须调用
wei220000 2016-02-21
  • 打赏
  • 举报
回复
引用 5 楼 lankun1234 的回复:
引用 4 楼 wei220000 的回复:
有一些父类,他允许被继承,但是他本身有一些属于自己的函数,这些函数也允许覆盖,但是函数中有一些自己必须要执行的步骤,如果不执行就会导致类错误,所以我们在覆盖这些函数的时候,必须调用super.xxx。让父函数正常执行,才能执行我们覆盖后添加的内容。
那怎么知道究竟要不要调用super.XXX呢?如果调用没出错,没调用也没出错,那怎么办?
@CallSuper在父类上有这个标示
蓝大巨 2016-02-21
  • 打赏
  • 举报
回复
引用 3 楼 parv2 的回复:
我自己的代码1 我自己的代码2 我自己的代码3 super.onXXX() 这样是不是先运行我的代码 再运行父类的 ------------------------ super.onXXX() 我自己的代码1 我自己的代码2 我自己的代码3 这样是不是先父类 再运行我的代码
你想表达什么?
蓝大巨 2016-02-21
  • 打赏
  • 举报
回复
引用 4 楼 wei220000 的回复:
有一些父类,他允许被继承,但是他本身有一些属于自己的函数,这些函数也允许覆盖,但是函数中有一些自己必须要执行的步骤,如果不执行就会导致类错误,所以我们在覆盖这些函数的时候,必须调用super.xxx。让父函数正常执行,才能执行我们覆盖后添加的内容。
那怎么知道究竟要不要调用super.XXX呢?如果调用没出错,没调用也没出错,那怎么办?
wei220000 2016-02-20
  • 打赏
  • 举报
回复
有一些父类,他允许被继承,但是他本身有一些属于自己的函数,这些函数也允许覆盖,但是函数中有一些自己必须要执行的步骤,如果不执行就会导致类错误,所以我们在覆盖这些函数的时候,必须调用super.xxx。让父函数正常执行,才能执行我们覆盖后添加的内容。
parv2 2016-02-19
  • 打赏
  • 举报
回复
我自己的代码1 我自己的代码2 我自己的代码3 super.onXXX() 这样是不是先运行我的代码 再运行父类的 ------------------------ super.onXXX() 我自己的代码1 我自己的代码2 我自己的代码3 这样是不是先父类 再运行我的代码
蓝大巨 2016-02-19
  • 打赏
  • 举报
回复
引用 1 楼 爽-歪-歪的回复:
你自己写个类,输入一句话,然后再继承并重写试试就可以知道了。不调用super.onXXX()的话,父类的方法是不会调用的,就等于覆盖,调用了super.onXXX()就执行了父类的方法再执行重写的方法咯。
我知道是调用父类的方法,可是这样写有什么用?
大-大-熊 2016-02-18
  • 打赏
  • 举报
回复
你自己写个类,输入一句话,然后再继承并重写试试就可以知道了。不调用super.onXXX()的话,父类的方法是不会调用的,就等于覆盖,调用了super.onXXX()就执行了父类的方法再执行重写的方法咯。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧