重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
方法重载:
- 发生在同一个类中
- 要求:方法名相同,参数列表不同
- 参数列表不同:
- 参数的个数不同
- 参数的数据类型不同
- 参数的顺序不同
public class Method {
public void add(int a, double b){
System.out.println(a + b);
}
//参数的数据类型不同
public void add(double a,double b){
System.out.println(a + b);
}
//参数的个数不同
public void add(int a,double b,int c){
System.out.println(a + b + c);
}
//参数的顺序不同
public void add(double a, int b){
System.out.println(a + b);
}
}
重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 当两个方法名字相同的时候就直接默认是方法重新
环境:两个类存在继承关系的时候,发生在继承父类的子类中。
要求:
- 方法名必须相同,包括大小写
- 方法的返回值类型必须相同
- 方法的参数列表必须相同
- 方法体不同
public class Fu {
//方法重写
public String house(){
return "我有一个房子,面朝大海,春暖花开 ---- 是个大别墅";
}
}
public class Zi extends Fu{
public String house(){
return "我只有一个小房子,但是以后别墅早晚是我的";
}
//在调用父类中的相同的方法时候,不能直接调用,
//需要将父类方法放在其他的方法中或者变量中进行存储然后再使用
String str = super.house();
}
public class Test {
public static void main(String[] args) {
//继承主要是通过子类对象来调用父类中的元素
//所以创建对象的时候使用的子类对象,不要创建父类对象
Zi z = new Zi();
z.house();//如果子类和父类中有相同的方法,直接创对象调用的是子类自己的方法
System.out.println(z.str);
}
}