方法重载和方法重写的区别
方法重载定义: 方法重载是让类以统一的方式处理不同类型数据的一种手段。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。也就是说,同一个方法,传递不同的参数,可以得到不同的结果.
方法重写定义: 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量。
下面是表格显示他们的区别:
方法名 | 返回值 | 参数 | 访问修饰符的权限 | 发生位置 | |
---|---|---|---|---|---|
方法重载(Overloding) | 无关 | 无关 | 不一致 | 无关 | 当前类 |
方法重写(Overriding) | 一致 | 一致 | 一致 | 权限不能严于父类 | 继承的子类 |
代码如下:
class Test
{
public static void main(String[] args)
{
HomeDog hd = new HomeDog(“阿黄”);
hd.desc();
}
}
//基类
class Dog
{
protected String name;
public Dog(String name){
this.name = name;
}
protected void desc(){
System.out.println(“I’m a dog”);
}
}
//子类
class HomeDog extends Dog
{
public HomeDog(){}
public HomeDog(String name){
super(name);
}
//重写父类的方法
public void desc(){
System.out.println(“这是一只狗,它的名字是”+this.name);
}
}
输出结果为:这是一只狗,它的名字是阿黄
可见,调用的是子类中的desc()方法,而不是父类的desc,这就是方法的重写.重载就更简单了,无参的HomeDog()和有参的HomeDog(String name)就是一个重载的方法.