做一个记录,当做备忘。
方法重载
public class OverloadingDemo {
private String name;
private Integer age;
public OverloadingDemo() {
}
public OverloadingDemo(String name) {
this.name = name;
}
public OverloadingDemo(String name, Integer age) {
this(name);
this.age = age;
}
public void introduce(){
}
private String introduce(String name) throws Exception{
return "";
}
/*
getter & setter.......
*/
}
说明: 方法重载是为了让类以统一的方式处理不同类型的数据。构造方法也可以进行重载。
方法重载遵从两同一不同原则:在同一个类中方法名相同,参数列表不同就是方法重载,和返回值类型,修饰符,抛出的异常无关,即是一个用static修饰,一个不用static修饰也可以。
方法重写
public class Person {
public void say(){
System.out.println("我是一个人");
}
}
class Student extends Person {
public void say() {
System.out.println("我是一个学生");
}
}
说明: 方法重写发生在继承关系中,子类对父类的一些方法进行扩展,修改叫做方法重写。
方法重写遵从两同两小一大原则:方法名称相同,形参列表相同;子类方法返回值类型比父类方法返回值类型更小或者相等,子类方法抛出的异常类应比父类方法抛出的异常类更小或相等;子类方法的访问权限应比父类方法的访问权限更大或相等。
需要注意的是重写方法和被重写的方法要么都是类方法,要么都是实例方法。
区别
重载 | 重写(覆盖) | |
---|---|---|
英文 | Overloading | Overiding |
范围 | 同一个类中 | 发生在继承关系中 |
方法名称 | 方法名称相同 | 方法名称相同 |
参数列表 | 参数列表必须不同 | 参数列表完全相同 |
返回值类型 | 没限制 | 子类小于等于父类 |
抛出异常类型 | 没限制 | 子类小于等于父类 |
访问权限 | 没有要求 | 子类大于等于父类 |