生活就是一系列的一系列的机会成本。
方法重载和方法重写是Java相关工作面试时经常问到的一个问题,我第一次问题也回答了这个问题。可变参数列表是JDK 1.5的新特性。
一、方法重写(override)
方法重写是出先在类的继承中的。
比如父类:Animal.java
public class Animal{
public void sleep(){
System.out.println("动物需要睡觉");
}
public void eat(){}//动物吃东西
}
子类:Dog.java
public class Dog extends Animal{
public void sleep(){
System.out.println("小狗需要睡觉");
}
}
Dog类继承Aniaml类,所以Dog类应该有父类的方法,sleep()方法就是从父类中继承来的,方法名相同,返回值相同,参数类表相同,但是方法体中的内容不同,所以我们把从父类继承来,但是修改过的方法叫做方法重写。
二、方法重载(overload)
方法重载是发生在同一个下面的。例如:
public class Operationg{
public double add(int a,int b){
return a+b;
}
public double add(int a,int b,int c){
return a+b+c;
}
}
如上面两个add()方法,参数名相同,返回值相同,只有参数列表不同的两个方法叫做重载方法。
三、可变参数列表
可变参数列表是JDK 1.5添加的新特性。如下:
public class VarialeParameters {
//固定参数列表
public int add(int a,int b,int c){
return a+b+c;
}
//可变参数列表
public int add(int a,int b,int...c){
int sum = 0;
for(int i = 0;i<c.length;i++){
sum = sum + c[i];
}
sum = sum + a + b;
return sum;
}
}
我们可以发现,调用可变参数列表时,隐含创建了一个数组,在方法体中,以数组的形式访问可变参数。