• java中的重载与重写


    重载简述

          在java语言中,同一个类中的两个或者两个以上的方法可以有同一个名字,只要他们的的参数声明不同即可,该方法被称为重载,这个过程称为方法的重载,它是实现java多态性的一种方式。

          重载是友好的,它不要求你在调用一个方法之前转换数据类型,它会自动地寻找匹配的方法。方法的重载是在编译时刻就决定调用哪个方法了,和重写不同。最最常用的地方就是构造器的重载。


    我们以代码为例

     public class Test {
           static void method(byte b){
               System.out.println ("method:byte");
           }
           static void method(short s){
               System.out.println ("method:short");
           }
           static void method(int i){
               System.out.println ("method:int");
           }
           static void method(float f){
               System.out.println ("method:float");
           }
           static void method(double d){
               System.out.println ("method:double");
           }
           public static void main (String[] args) {
               method((byte)1);
               method('c');
               method(1);
               method(1L);
               method(1.1);
               method(1.1f);
           }
       }

     输出结果:

    method:byte
    method:int
    method:int
    method:float
    method:double
    method:float

    重载总结:从上述输出结果可以看出:首先要寻找的是数据类型正好匹配方法。如果找不到,那么就提升为表达能力更强的数据类型,如上例没有正好容纳long的整数类型,那么就转换为 float类型的。如果通过提升也不能找到合适的兼容类型,那么编译器就会报错。反正是不会自动转换为较小的数据类型的,必须自己强制转换,自己来承担转变后果。char类型比较特殊,如果找不到正好匹配的类型,它会转化为int而不是short,虽然char是16位的。


    重写简述 

    Java重写只是存在在父子类之间的概念,子类只能重写父类的 非private和非final方法;对于不想让子类重写的发放可以将方法用private或者final来修饰;如果父类想让子类重写的方法可以用 protected方法来修饰;
    1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
    2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
    3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
    4.子类方法的返回值必须是父类方法返回值的子类或者和父类一样。
     
    注意:
    1.方法重写,子类的方法必须和父类要重写的方法、方法名、参数列表、返回值一样,否则就不是重写。

    2.子类方法的访问级别不能低于父类相应方法的访问级别。

     

    3.子类方法的返回值必须是父类方法返回值的子类或者和父类一样。

    4.最好不要在父类构造函数中调用要被重写的方法。

  • 相关阅读:
    基本sql查询语句练习
    SZU:J38 Number Base Conversion
    SZU:B54 Dual Palindromes
    SZU:A66 Plastic Digits
    HOJ:2031 进制转换
    SZU:G34 Love code
    SZU:A25 Favorite Number
    Vijos:P1001谁拿了最多奖学金
    SZU:A26 Anagram
    SZU:A12 Jumping up and down
  • 原文地址:https://www.cnblogs.com/zhangxiangguo/p/6734464.html
Copyright © 2020-2023  润新知