方法的重载(overload)
- 定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数列表不同即可。满总这样特征的多个方法,彼此之间构成方法的重载。
- 特点:“两同一不同”。两同:同一个类、相同的方法名。一不同:参数列表不同。
方法的重载与形参的名、权限修饰符、返回值类型都没有关系
方法名相同、形参不同
public void sum(int i,int j){ } public void sum(int i,double d){ } public void sum(String str1,String str2){ } public void sum(String str1,int i){ }
编译通过
方法名相同、形参相同
public void sum(int i,int j){ } public void sum(int m,int n){ }
编译报错
报错信息:
java: 已在类 test.test中定义了方法 add(int,int)
实际问题(举例)
优先调用
优先使用形参不需要类型转换的方法
public class test { public static void main(String[] args) { test.sum(1,2); //形参为(int,int) } public static void sum(int i, int j){ System.out.println("int"); } public static void sum(double i,double j){ System.out.println("double"); } }
int
自动类型提升
public class test { public static void main(String[] args) { test.sum(1,2.0); //形参为(int--- >double,double) } public static void sum(int i, int j){ System.out.println("int"); } public static void sum(double i,double j){ System.out.println("double"); } }
强制类型转换
public class test { public static void main(String[] args) { test.sum((double) 1,(double) 2); //形参强制转换为(double,double) } public static void sum(int i, int j){ System.out.println("int"); } public static void sum(double i,double j){ System.out.println("double"); } }
double
其他
public class test { public static void main(String[] args) { int []arr1 = new int[]{1,2,3,4,5}; System.out.println(arr1); //[I@b4c966a char []arr2 = new char[]{'a','b','c'}; System.out.println(arr2); //abc boolean []arr3 = new boolean[]{true,false}; System.out.println(arr3); //[Z@2f4d3709 } }
Java自身提供的API也存在着方法的重构,同一个方法名,编译器通过输入形参的不用,选择合适的方法
声明:本文为网课学习Java所做笔记,如有差错,允以见谅。