重载Overload 和重写Override区别
一、含义
重载OverLoad:表示同一个类中的可以有多个方法名称相同的方法,但这些方法的参数列表各不相同(即参数个数或者类型不同)
重写Override:重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将 调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。
二、代码
1、重载OverLoad
package com.zking.ssm.mapper;
public class Person {
public static void main(String[] args) {
Person p=new Person();
p.hello();
p.hello("李明");
}
public void hello(){
System.out.println("hello");
}
public void hello(String pname){
System.out.println("hi, "+pname);
}
}
小结:
1.重载Overload是一个类中多态性的一种表现;
2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序);
3.在写重载方法的时候,返回值的类型不一样也是可以的
2、重写Override
package com.zking.ssm.mapper;
public class Person {
public static void main(String[] args) {
man p=new man();
p.hello();
}
public void hello(){
System.out.println("hello");
}
}
class man extends Person{
@Override
public void hello(){
System.out.println("hello,is man");
}
}
小结一下:
1.发生在父类与子类之间
2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
后面部分的小结其实就是前面含义的一个理解,还是比较好理解的,没有什么太多其他的东西,这个也是为了更好的理解这个重载和重写