重载

  • 重载就是为了解决下面这种情况:
      public int max(int i, int j) {
            return i > j ? i : j;
      }
      public double maxDouble(double i, double j) {
            return i > j ? i : j;
      }
      public double max(double i, double j) {
            return i > j ? i : j;
      }
 
  • java的重载只和签名有关,方法名相同形参不同,就视为重载;
 
      重载和权限修饰符、static修饰符、返回值无关,这些东西可以相同,也可以不同;
 
public double max(double i, double j) {
            return i > j ? i : j;
      }
 
 
public void max(double i, double j) {
            double d =  i > j ? i : j;
           
      }
 
private void max(double i, double j) {
            double d =  i > j ? i : j;
           
      }
 
private static double max(double i, double j) {
            return i > j ? i : j;
      }
上面这四个方法任意拿出两个方法来都不行,会报错,这不是重载,而是重名;
报错:Duplicate method max(double, double) in type DemoOverLoad,在DemoOverLoad类里有两个完全相同的方法max(double,double);
java里区别方法只看签名,签名相同就视为同一个方法;
这里有歧义性,所以连编译都通不过。
原文地址:https://www.cnblogs.com/Mike_Chang/p/7051042.html