加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Overriding:哈哈,就不告诉你这 11 条规则

发布时间:2021-06-05 00:36:59 所属栏目:编程 来源:互联网
导读:01、什么是重写? 重写带来了一种很是重要的手段,可以让子类从头实现从父类那担任过来的要领。在下面这幅图中,Animal 是父类,Dog 是子类,Dog 从头实现了 move

重写带来了一种很是重要的手段,可以让子类从头实现从父类那担任过来的要领。在下面这幅图中,Animal 是父类,Dog 是子类,Dog 从头实现了 move() 要领用来和父类举办区分,事实狗狗跑起来照旧较量有特色的。

重写的要领和被重写的要领,不只要领名沟通,参数也沟通(也就说是要领署名沟通),只不外,要领体有所差异。

02、哪些要领可以被重写?

法则一:只能重写担任过来的要领。

由于重写是在子类从头实现从父类担任过来的要领时产生的,以是只能重写担任过来的要领,这很好领略。这就意味着,只能重写那些被 public、protected 可能 default 修饰的要领,private 修饰的要领无法被重写。

Animal 类有 move()、eat() 和 sleep() 三个要领:

public class Animal { 

    public void move() { } 

 

    protected void eat() { } 

     

    void sleep(){ } 

Dog 类来重写这三个要领:

public class Dog extends Animal { 

    public void move() { } 

 

    protected void eat() { } 

 

    void sleep(){ } 

OK,完全没有题目。但假如父类中的要领是 private 的,就行不通了。

public class Animal { 

    private void move() { } 

此时,Dog 类中的 move() 要领就不再是一个重写要领了,由于父类的 move() 要领是 private 的,对子类并不行见。

public class Dog extends Animal { 

    public void move() { } 

03、哪些要领不能被重写?

法则二:final、static 的要领不能被重写。

一个要领是 final 的就意味着它无法被子类担任到,以是就没步伐重写。

public class Animal { 

    final void move() { } 

因为父类 Animal 中的 move() 是 final 的,以是子类在实行重写该要领的时辰就呈现编译错误了!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读