Java--方法重写

1)概念

        重写(override):也称为覆盖。重写是子类对父类非静态非private修饰非final修饰非构造方法等的实现过程 进行重新编写, 返回值和形参都不能改变即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定 于自己的行为。 也就是说子类能够根据需要实现父类的方法。

2)方法重写的规则

1.  子类在重写父类的方法时,一般必须与父类方法原型一致返回值类型方法名参数列表要完全一致。

2.  被重写的方法返回值类型可以不同,但是必须是具有父子关系的。

3.  访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方 法就不能声明为 protected

4.  父类被static、private修饰的方法、构造方法都不能被重写

5.  重写的方法, 可以使用 @Override 注解来显式指定. 有了这个注解能帮我们进行一些合法性校验. 例如不小心 将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法 构成重写。

这里做几点解释:

Java--方法重写_第1张图片Java--方法重写_第2张图片

3)方法重写和方法重载的区别

Java--方法重写_第3张图片

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

做几点说明:

Java--方法重写_第4张图片

Java--方法重写_第5张图片

 

4)重写的设计规则

        对于已经投入使用的类,尽量不要进行修改。最好的方式是:重新定义一个新的类,来重复利用其中共性的内容, 并且添加或者改动新的内容。

        例如:若干年前的手机,只能打电话,发短信,来电显示只能显示号码,而今天的手机在来电显示的时候,不仅仅 可以显示号码,还可以显示头像,地区等。在这个过程当中,我们不应该在原来老的类上进行修改,因为原来的 类,可能还在有用户使用,正确做法是:新建一个新手机的类,对来电显示这个方法重写就好了,这样就达到了我 们当今的需求。

      这里介绍一下静态绑定和动态绑定:

1. 静态绑定:也称为前期绑定(早绑定),即在编译时,根据用户所传递实参类型就确定了具体调用那个方法。典型代表--方法重载

2.动态绑定: 也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体 调用那个类的方法。典型代表--方法重写

说明:

1. 动态绑定,编译的时候仍然认为是父类的方法,运行的时候,又认为成子类重写的方法。
2. 静态绑定,在编译期间就能确定调用哪个方法;动态绑定,编译期间确定不了,在运行期间才能确定调用哪个方法 (是否有方法重写等)。

uu们加油!!!

 

 

 

你可能感兴趣的:(java,开发语言)