重载与重写的区别
方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或 参数类型不能完全相同。
方法冲写是存在父类和子类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数列表和兼容的返回类型。
注:
重写和重载没有半毛钱的关系,只是名字长得像而已
重载(Overload):
1)方法重载是让类以统一的方式来处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数列表
2)重载的时候,方法名要一样,参数列表不一样,返回值类型可以相同也可以不相同。
重写(Override):
1)子类可以继承父类的方法和属性,但有时候子类不想要父类的那些土方法,想做些改变,变得潮流,这就需要重写。
2)方法重写又叫方法覆盖
重载的规则:
1.必须具有不同的参数列表
2.方法名必须相同
3.可以有不同的访问修饰符,返回值类型
4.可以抛出不同的异常
重写的规则
1,参数列表、方法名必须与被重写的方法相同
2,访问修饰符必须相同或更大 private<default<protected<public
3,返回值类型必须相同或兼容(是被重写方法的返回值类型的子类)
4,抛出的异常相同或更小
面试题:重载和重写的区别
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个
类中,同名的方法具有不同的参数列表(参数类型不同、参数个数不同或者二者皆不同)则视为重载;重写发生在父类和子类中,重
写要求子类重写方法和父类被重写方法有相同的参数列表,有兼容的返回类型,访问修饰符更大,抛出的异常更小。重载对返回值类
型没有特殊的要求,不能根据返回值类型进行区分。