Overriding:哈哈,就不汇报你这 11 条法则
重写带来了一种很是重要的手段,可以让子类从头实现从父类那担任过来的要领。在下面这幅图中,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 的,以是子类在实行重写该要领的时辰就呈现编译错误了! (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |