转自https://blog.csdn.net/qq_44257807/article/details/115601953
一、重载和重写的概念:
重载的概念 :
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数 类型不同即可。
重写的概念:
在子类中可以根据需要对从父类中继承来的方法进行改造,也称 为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
二、重载和重写的特点:
重载的特点:
与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类 型)。调用时,根据方法参数列表的不同来区别。
重写的特点:
1.子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表 。
2.子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型 (返回类型为类)。
3.子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限 。
4.子类不能重写父类中声明为private权限的方法 。
5.子类方法抛出的异常不能大于父类被重写方法的异常 (父类异常的子类)。
重载示例
//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
double add(double x,double y){return x+y;}
重写示例:
public class Person{
public String name;
public int age;
public String getInfo(){
return “Name:” + name + “\n” + “age:” + age;
}
}
public class Student extends Person{
public String school;
public String getInfo(){
return "Name: "+ name + "\nage: "+ age + "\nschool: "+ school;
}
public static void main(String[] args){
Person p1=new Person();
//调用Person的getInfo方法
p1.getInfo();
Student s1 = new Student();
//调用Student的getInfo方法
s1.getInfo();
}
}
三、简述Java中重写和重载的区别:
重写,overriding,是指在继承的情况下,子类中定义了与父类中具有相同型构的新方法,也就是子类重写了父类的方法。
重载,overloading,是在同一个类中,定义了一个以上具有相同名称,但是有着不同型构的方法,在同一个类中是不允许定义多于一个具有相同型构的方法的。
构造器也是可以重载的,实际上,构造器就是一个方法,构造器的名称就是方法的名称。