java方法中可变参数
可变参数的使用细节:
![](https://cdn.jsdelivr.net/gh/Pluto-0906/blog-img@main/uPic/2022-10-11-21:33:04-4rI4vU.png)
代码
public class Main {
public static void main(String[] args) {
T t = new T();
// 1. 可以数组传入
int[] a = {1, 2, 3};
System.out.println(t.sum(a));
// 2. 正常多个参数也可以
System.out.println(t.sum(1, 2, 3, 4));
// 3. 0个参数也可以
System.out.println(t.sum());
System.out.println(t.sum(2.1, 1, 0));
}
}
class T {
public int sum(int... nums) {
int res = 0;
for (int i = 0; i < nums.length; ++i) {
res += nums[i];
}
return res;
}
// 可变参数有且只能有一个并且必须放在最后
public double sum(double a, int... nums) {
double res = a;
for (int i = 0; i < nums.length; ++i) {
res += nums[i];
}
return res;
}
}
构造器细节
构造器并不是完成对象的创建,而是完成对象的初始化。
创建对象流程
注意属性初始化分三步走:默认初始化,显示初始化,构造器初始化
![](https://cdn.jsdelivr.net/gh/Pluto-0906/blog-img@main/uPic/2022-10-14-22:21:12-Qj0cD8.png)
继承
使用细节
- 当创建子类对象时,不管使用子类的那个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去显示地指定父类的某个构造器进行初始化,否则编译不会通过。
- 当子类对象试图访问父类的属性或者方法时,按照继承关系,逐级向上查询,一旦存在因为访问权限问题无法访问的情况,直接报错,不会再向更上一级进行查询访问。
super关键字
- 如下图所示,当子类中使用this.方法名或者直接方法名时,会从子类逐级向父类查找,但是如果使用super.方法名,访问顺序就跳过当前类,直接从父类开始查找。
![](https://cdn.jsdelivr.net/gh/Pluto-0906/blog-img@main/uPic/2022-10-16-16:04:40-PsUQOz.png)
super与this的比较
![](https://cdn.jsdelivr.net/gh/Pluto-0906/blog-img@main/uPic/2022-10-16-16:18:51-6UUoLm.png)