时间:2025-04-24 10:00:14
简述重载与覆盖的区别
重载与覆盖的主要区别如下:
1. 重载是一个编译时的概念,编译器在编译时会处理同名函数的调用问题,确定调用哪一个函数,因此在运行时不存在涉及调用重载函数的额外开销。而覆盖是运行时的概念,它在运行时从一组被覆盖的函数中选择一个函数,有额外的开销,但是基本可以忽略不计。
2. 重载必须是发生在一个类中,出现了多个同名但是参数列表不同的方法。参数列表不同是指类型、个数、顺序不同。重载的目的是为了只要记住一个方法名就可以根据不同的参数完成不同的功能。而覆盖的前提必须是有继承或者实现的关系。子类或者实现类中定义了一个与父类或者父接口的同名方法,就是覆盖。覆盖时还需要注意,子类或者实现类重写的方法的范围修饰符要大于等于父类,参数列表也要和父类相同。覆盖的目的是子类对父类的功能进行扩展。
3. 重载和覆盖在参数列表上的要求不同。重载要求参数列表不同,而覆盖要求参数列表相同。
4. 重载和覆盖在调用方法上的依据不同。覆盖关系中,调用方法是根据对象的类型来决定;而重载关系是根据调用时的实参表与形参表来选择方法体的。
《重载与覆盖有什么区别》不代表本网站观点,如有侵权请联系我们删除
精彩推荐
点击排行