Java:重写与重载的区别
1. 重写(子类重写父类)
重写: 重新写一遍。在子类中把父类本身有的方法重新写一遍。
子类继承了父类原有的方法,但并不是原封不动的继承父类中的某个方法 --> 在方法名,参数列表,返回类型均相同的情况下, 对方法体进行修改或重写。
注意:子类函数的访问修饰权限不能少于父类
public class object1{
public static void main(String[] args) {
man a = new person();
a.sayHello();
}
}
public class person {
public void sayHello() {
System.out.println("Hello");
}
}
class man extends person{
public void man() {
System.out.println("hi!");
}
}
重写总结:
1.父类与子类之间
2.方法名,参数列表,返回类型 必须相同
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
2.重载(同一个类中)
重载:参数名称相同,但参数类型或者参数个数不同
public class object1{
public static void main(String[] args) {
man a = new person();
a.sayHello();
a.sayHello("abc");
}
}
public class person {
public void sayHello() {
System.out.println("Hello");
}
public void sayHello(String name) {
System.out.println("Hello" + " " + name);
}
}
重载 总结:
1.在一个类中
2.重载要求同名,但方法的参数列表不同(参数类型,参数个数/参数顺序)
“ 重载 ” 和 “ 重写 ” 的区别?
方法的重载和重写都是实现多态的方式,区别在于
重载实现的是编译时的多态性,
重写实现的是运行时的多态性。
1.重载是在一个类中,参数名称相同,参数不同类型或个数不同;重写是在子类与父类之间,要求子类方法中与父类被方法中有相同的参数列表,
2.重写要有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常; 重载对返回类型没有特殊的要求,不能根据返回类型进行区分。