重写与重载的区别有哪些?
方法的重写是指两个方法的返回值、方法名、参数的类型和个数相同(子类重写父类的方法)
方法的重写,不能发生在同类中,只能发生在子类中。
若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
方法重写的权限:子类中的权限大于或等于父类的权限,(修饰符高低:private < 默认修饰符<protected < public)
特殊情况:子类不能重写父类被声明为private权限的方法
![](https://profile-avatar.csdnimg.cn/36b94c3aa28b47db9f93b5210efdd789_2301_77444674.jpg!4)
java面试题--重写与重载的区别
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
- 你可以看下这个问题的回答https://ask.csdn.net/questions/690395
- 以下回答由chatgpt基于相关博客总结生成:
重写和重载是Java语言中的两个重要概念,它们都涉及到函数的定义和使用。
- 重载 函数的重载是指在一个类中可以定义多个同名的函数,但这些函数有不同的参数列表。在Java中实现函数重载的关键是函数的参数列表,Java编译器会根据函数的参数个数、类型和顺序等信息来区分不同的同名函数。函数重载可以提高代码的复用性和可读性。
需要注意的细节有:
- 函数名称必须相同。
- 参数列表必须不同(个数不同、类型不同、顺序不同)。
- 返回类型可以相同也可以不同,但不能仅仅是返回类型不同而已。
- 重载时应具有明显不同的功能,如参数个数或类型不同。
以下是一个重载的例子:
public class MathUtils { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } }
- 重写 函数的重写是指在子类中定义一个与父类中同名、同参数列表、同返回值类型的函数,但实现不同。重写可以实现多态,在运行时调用子类的方法。
需要注意的细节有:
- 要被重写的函数必须是父类的方法,不能是父类定义的静态方法。
- 重写的方法必须与被重写的方法有相同的方法名、参数列表和返回类型。
- 重写的访问修饰符不能比被重写的方法的访问修饰符更严格。
- 重写的方法不能抛出比被重写的方法更宽泛的异常。
以下是一个重写的例子:
public class Animal { public void move() { System.out.println("Animal moves."); } } public class Dog extends Animal { @Override public void move() { System.out.println("Dog runs."); } }
当调用
Dog
的move()
方法时,会输出Dog runs.
总结: 重载是一个类中定义多个同名但参数列表不同的函数,重写是子类实现一个与父类同名参数列表相同但实现不同的方法。在Java中,重载和重写是实现多态的两个基本手段。在使用重载和重写时,需要注意方法参数、返回值、访问修饰符和异常等细节,以确保正确地实现多态。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 python忆阻器数字识别
- ¥15 无法输出helloworld
- ¥15 高通uboot 打印ubi init err 22
- ¥20 PDF元数据中的XMP媒体管理属性
- ¥15 R语言中lasso回归报错
- ¥15 网站突然不能访问了,上午还好好的
- ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
- ¥15 semrush,SEO,内嵌网站,api
- ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
- ¥15 振荡电路,ADS仿真