方法重载和重写
方法重载和重写的区别
方法的重载
一,重载概念:
在一个类中,允许存在一个以上同名的方法,只要他们的参数个数或者参数类型不同即可,
二,重载的特点:
与返回值类型无关,只与参数列表,而且参数列表必须不同,(参数个数或者参数类型),在调用时,根据方法参数列表的不同来区分
三,方法重载的细节
俩同一不同:
俩同:同一个类,相同方法名
一不同:参数列表不同:参数类型不同,参数数个数不同;
下面展示一些 内联代码片
。
// 方法重写
public void eat(){
}
public void eat(String cereal ){
}
public int eat(String cereal,String fruits){
}
方法重写
一,重写的定义
在子类中可以根据需要对父类继承来的方法进行改造,也称为方法的改造覆盖,在程序执行时,子类的方法将覆盖父类的方法。
二,方法重写应用
重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法。
三,重写的要求
1,子类重写的方法必须和父类被重写的方法具有相同的方法名,参数类表
2,子类重写的方法的返回值类型不能大于父类被重写的方法和返回值类型
3,子类重写的方法使用权限不能小于父类被重写的方法访问修饰权限
子类重写父类中声明为private权限的方法
4,子类方法抛出的异常不能大于父类被重写方法的异常
5,子类和父类中同名同参数的方法要么都声明为非 static的(考虑重写的事),要么都声明为static的(不叫重写)
方法重写。
内联代码片
// 父类
public class Person {
public void eat(String cereal ){
System.out.println("人吃东西");
}
//子类
class Student extends Person{
public void eat(String cereal){
System.out.println("学生吃有营养的东西");
}
}
从编译和运行的角度来看
重载,是指允许存在多个同名方法,而这些方法的参数不同。编译器根据方法不同的参数列表,对同名方法的名称做修饰。对于编译器而言,这些同名的方法就变成了了不同的方法。他们调用地址在编译器就绑定了。java的重载是可以包括父类和子类的,既子类可以重载父类的同名不同参数的方法。
所以;对于重载而言,在方法调用之前,编译器早就确定了所要调用的方法,这称为“早绑定”或者“静态绑定”;
这对于多态,只有等到方法调用的那一刻,编译器才会确定所要调用的方法,这称为“晚绑定”或者“动态绑定”。