1.什么是方法的重载?
重载的存在是为了解决调用方法时,出现方法名不同,但参数列表不同的情况,比如类的构造方法就常用到方法的重载,调用构造方法创建对象时,传入不同的参数就可以方便的对属性赋值或者不赋值。
2.什么是方法的重写?
重写的存在是为了解决子类调用父类的方法时,对父类的方法的得到的结果不满意,想拥有自己想要的结果,就对父类的方法进行了重写。
3.方法的重载和方法的重写有什么区别?
两同三不同:方法的重载是在同一个类中,同一个方法名,具有不同的参数类型,参数个数和参数顺序。与返回值无关。
例如以下代码:Person类中的构造方法用到了方法的重载
public Person(){}
public Person(String name, int age, char gender){
this.name = name;
this.age = age;
this.gender = gender;
}
两同三不同:方法的重写具有同一个方法名,同样的参数列表。
返回值类型可以不同(基本类型是一致的,引用类型可以不同,比如父类方法返回值类型是Object,子类方法是Student类,子类类型<=父类类型--多态性);
异常类型不同,比如父类方法类型是Exception,子类方法类型是RuntimeException,子类类型<=父类类型--多态性;
权限修饰符不同,比如父类方法权限修饰符是default,子类方法权限修饰符是public,子类类型>=父类类型。
例如如下代码
父类Person类的sleep()方法
protected Object sleep() throws Exception{
System.out.println("这是sleep方法。。。");
return null;
}
子类Student类重写了父类的sleep()方法
public String sleep() throws RuntimeException{
System.out.println("学生的sleep方法。。。");
return null;
}
总结:一般情况下,对于方法的重写,要求都一致。