重载就是同样的一个方法根据不同的数据输入,做出不同的逻辑处理;
重写就是子类继承相同的父类方法,在数据输入一样的情况下做出区别于父类的响应,这样就需要重写;
1.重载:发生在同一个类中,方法名称必须相同,参数类型可以不同、数量可以不同、顺序可以不通过,返回值和访问修饰符可以不同;
举一个实际允许重载的代码例子:
StringBuilder 有多个构造器方法,可以构造一个空的StringBuilder
StringBuilder str = new StringBuilder();
//下面是StringBuilder 父类中的子类的具体实现
public StringBuilder() {
super(16);
}
-------------------------------------------
也可指定一个初始字符串
StringBuilder str1 = new StringBuilder("test");
///下面是StringBuilder 父类中的子类的具体实现
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
}
重载解析:编译器通过各个方法提供的参数类型与特定的调用方式使用的参数类型进行匹配,选择合适的方法,如果编译器找不到合适的方法,就会产生编译错误,因为传递的参数类型不匹配,这个过程叫做重载解析;
总结一下: 同一类中,相同的方法根据不同的参数做不同的逻辑处理;
2.重写:重写过程发生在运行期,子类对父类允许访问的方法的实现过程进行重新编写;
1)返回值类型、方法名称、参数列表一样,子类抛出的异常范围小于父类,访问修饰符范围大于等于父类;
2)如果父类访问修饰符为private、static、protect,则不能被重写,被static修饰的可以重新声明;
3)构造方法不能被重写;
总结一下:重写就是子类对父类的改造,表明形势不变,内部逻辑可以改变;
代码段:
public class test {
public String str(String string){
return string+"a";
}
}
class test1 extends test{
@Override
public String str(String string){
return string+"b";
}
}