关于重载(overlord)和重写(override)的区别
1.重载(overlord)
重载的主要特点:
1.在同一个类中:
方法名相同,参数列表不同,返回值类型可以不同,方法修饰符可以不同,方法体可以不同的两个或多个类;
举栗子:
public class Test1 {
//方法一
public void sayholle(String str){
System.out.println("我是参照方法");
}
//方法二
private String sayholle(String str, int i){
System.out.println("我是方法一的重载方法");
return "我是方法一的重载方法";
}
}
可以看到,方法一和方法二即重载关系,他们的方法名相同,而参数列表不同,前者传递的是字符串类型,后者则是字符串类型和整型
2.在不同的类中,类A与类B的必须是继承关系;
子类中存在 与 父类中的方法----方法名相同,参数列表不同,返回值类型可以不同,方法修饰符可以不同,方法体可以不同的两个或多个方法
父类
public class Test1 {
//方法一
public void sayholle(String str){
System.out.println("我是参照方法");
}
}
子类
public class Test2 extends Test1{
@Override
//方法二
public void sayholle(String str,int n) {
super.sayholle(str);
System.out.println("我和方法一是跨类的重载关系");
}
}
2.重写(override)
重写的主要特点:
与父类中的方法对比,方法名相同,方法修饰符相同,返回值类型相同,参数列表相同,方法体不同(方法体如果都相同的话,那就不是重写了…仅仅是普通的继承)
举栗子:
父类
public class Test1 {
//方法一
public void sayholle(String str){
System.out.println("我是参照方法");
}
}
子类
public class Test2 extends Test1{
@Override
//方法三
public void sayholle(String str) {
super.sayholle(str);
System.out.println("我对方法一进行了重写");
}
}
其中,方法一和方法三之间是重写关系;
3.总结
简单来讲,重写和重载的区别在于:
重写方法得保证方法的头信息一定要和被重写方法保持一致,其中参数列表不可变;
重载方法则是参数列表必定改变,除了方法名外,其他都可改变;
在保证方法名相同的基础上,先观察参数列表吧
这里需要注意的是,两者是可以同时存在的
父类
public class Test1 {
//方法一
public void sayholle(String str){
System.out.println("我是参照方法");
}
}
子类
public class Test2 extends Test1{
//方法二
private String sayholle(String str, int i){
System.out.println("我和方法一or方法三的重载关系");
return "我和方法一or方法三的重载关系";
}
@Override
//方法三
public void sayholle(String str) {
super.sayholle(str);
System.out.println("我对方法一进行了重写,并且我和方法二是重载关系");
}
}
从如上代码可以知道,
方法三不仅是方法一的重写方法,同时也是方法二的重载方法;