• 方法的重载和重写


    方法的重载

            * 重载就是在一个类中,有相同的函数名称,但形参不同的函数。
            * 方法的重载的规则: 
                  * 方法名称必须相同。
                  * 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
                  * 方法的返回类型可以相同也可以不相同。
                  * 仅仅返回类型不同不足以成为方法的重载。
            * 实现理论:
                  * 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对
                    应的方法,如果匹配失败,则编译器报错。
            * 实例:
                  public class Demo03 {
                      public static void main(String[] args) {
                          int add = add(1, 2, 3);
                          System.out.println(add);
                          double add1 = add(1.2, 2.3);
                          System.out.println(add1);
                      }
    
                      public static int add(int a, int b) {
                          return a + b;
                      }
    
                      public static double add(double c, double d) {
                          return c + d;
                      }
    
                      public static int add(int a, int b, int c) {
                          return a + b + c;
                      }
                  }
    

    方法的重写

            * Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),
              同时也可以对父类中的方法进行扩展,以增强自己的功能,这样就称之为重写,也称为复写或者覆盖。所谓方法重写就是子类的方法和父类中继承下来的方
              法具有完全相同的方法名、返回值类型、方法的参数个数以及参数类型,这样才能被称为方法重写。
            * 重写规则:
                  1.子类方法的参数列表必须和父类中被重写的方法的参数列表相同(参数个数和参数类型),否则只能实现方法的重载。
                  2.子类方法的返回值类型必须和父类中被重写的方法返回值类型相同,否则只能实现方法重载。
                  3.在Java规定,子类方法的访问权限不能比父类中被重写的方法的访问权限更小,必须大于或等于父类的访问权限。
                  4.在重写的过程中,如果父类中被重写的方法抛出异常,则子类中的方法也要抛出异常。但是抛出的异常也有一定的约束--->子类不能抛出比父类更多
                    的异常,只能抛出比父类更小的异常,或者不抛出异常。例如:父类方法抛出Exception,那么子类就只能抛出IOException或者抛出比Exception小
                    的异常或者不抛出异常。
            * 实例:
                  public class Person {
    
                      public void say(){
                          System.out.println("Person说话");
                      }
                  }
    
                  public class Student extends Person {
    
                      @Override
                      public void say() {
                          //super.say();
                          System.out.println("Student读书");
                      }
    
                      public static void main(String[] args) {
                          Student student = new Student();
                          student.say();
                      }
    
                  }
            * 运行结果:Student读书
            * 可以看出:子类重写父类的方法后,在实例化子类的时候则调用的是子类中的方法,父类的方法就如同被覆盖了一样。如果在子类中需要调用父类的方法,
              则在子类方法中使用super关键字调用父类的方法,格式:super.父类中的方法名(参数列表)。
  • 相关阅读:
    sed
    UCOSIII(二)
    UCOSIII(一)
    IIC
    SPI
    vii
    find
    grep
    Scrum项目4.0
    Scrum项目3.0
  • 原文地址:https://www.cnblogs.com/ITHSZ/p/13217848.html
Copyright © 2020-2023  润新知