1. 重载的概念在同一个类中,允许存在一个以上的同名方法,只要它们的参数不同即可,下面我们就来说一说关于java方法覆盖与重载?我们一起去了解并探讨一下这个问题吧!
java方法覆盖与重载
重载1. 重载的概念
在同一个类中,允许存在一个以上的同名方法,只要它们的参数不同即可。
参数不同的含义是仅参数个数不同 或者 类型不同 或者 顺序不同.
注意 :
参数不同不包含参数名的不同
2. 如何重载
在同一个类中写同名方法, 保证参数不同即可
public class Person {
// 这个方法就可以和下面2个方法形成重载
public int add(int a, int b) {
System.out.println(“a b”);
int c = a b;
return c;
}
public double add(int a, double b) {
return a b;
}
public double add(double a, int b) {
return a b;
}
public void test() {
System.out.println(“test()”);
}
}
3. 重载的方法的调用
调用重载方法取决于实参列表, 和形参列表要匹配才可以, 或者也可以是被形参列表兼容.
public class PersonTest {
public static void main(String[] args) {
Person t = new Person();
System.out.println(t.add(30, 50)); // 调用 int add(int a, int b)
System.out.println(t.add(209, 0.502)); // 调用 double add(int a, double b)
}
}
4. 重载的作用
在调用同名方法时, 只需要实参不同即可, 调用者调用这个方法就变得简单, 也不用再记忆多个不同的方法名. 前提是这些重载的方法有类似的功能.
5. 重载的练习
1.判 断:
与void show(int a,char b,double c){}构成重载的有:
a) void show(int x,char y,double z){}
b) int show(int a,double c,char b){}
c) void show(int a,double c,char b){}
d) boolean show(int c,char b){}
e) void show(double c){}
f) double show(int x,char y,double z){}
g) void shows(double c){}
参数传递机制1. 为什么要传参有的方法在执行时, 需要用到一些值, 这些值在执行时必须要由调用者传递(告诉)给方法, 方法才可以正确执行
2. 传参的本质是什么传参的本质是方法在调用时, 把实参的值赋值给形参(形参是局部变量), 也称为传值调用
3. 方法调用的内存结构
public class Person {
public void test2(int a) {
System.out.println(“test2 a:” a);
}
public int add(int a, int b) {
System.out.println(“a b”);
int c = a b;
return c;
}
}
public class PersonTest {
public static void main(String[] args) {
Person t = new Person();
int a = 10;
int b = 20;
int c = t.add(a, b); // 通过值传递把a的值赋值给方法中的形参a
System.out.println(c); // 方法调用返回值也是赋值给c
}
}
注意 : 方法返回值30保存在一个临时空间中, 方法调用结束后返回给调用者后就消失.
可变参数1. 什么是可变参数当一个方法中的参数类型都相同, 但是个数不确定的情况下.
2.如何声明可变参数//下面采用数组形参来定义方法
public void test(int a ,String[] books);
//以可变个数形参来定义方法
public void test(int a ,String…books);
注意 : 以上两个方法不可以共存.
public class VarArgs {
/*类中的方法的功能类似, 但是参数个数不确定
public int avg(int a, int b) {
return (a b) / 2;
}
public int avg(int a, int b, int c) {
return (a b c) / 3;
}
public int avg(int a, int b, int c, int d) {
return (a b c d) / 4;
}*/
// 可变参数, 参数的个数可以是任意个, 只能放在参数列表的最后
public int avg(String a, int... values) { // int...是数组, 同时又能兼容任意个数参数
int sum = 0;
for (int i = 0; i < values.length; i ) {
sum = values[i];
}
return sum / values.length;
}
}
可变参数的本质上是方法在调用时, 实际传递的是数组.
public class VarArgsTest {
public static void main(String... args) {
VarArg va = new VarArg();
System.out.println(va.avg(2)); // 一个参数可以
System.out.println(va.avg()); // 不传参数也可以
System.out.println(va.avg(null)); // 传null也可以
System.out.println(va.avg(10, 20, 40, 50)); // 任意多个也可以
System.out.println(va.avg(10, 20, 40, 50,70, 80, 100, 5, 2, 3));
int[] arr = new int[]{2, 3, 4, 5};
System.out.println(va.avg(arr)); // 直接传数组也可以
System.out.println(va.avg(new int[]{10, 20})); // 编译器会自动做这件事,也可以手工创建数组
}
}
java 枚举的定义与用法
javaweb内容js\java中json的使用
java数组的语法和使用步骤
java技术事务的传播行为
java运算符详细介绍
,