Java中的方法重载与重写
Java中的方法重载与重写
重载:
- 发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
- 参数列表不同(个数、顺序、类型)和方法的返回值类型无关。
重写:
- 重写发生在子类与父类之间,子类重新定义了父类的方法。
- 重写要求子类按照父类被重写方法有相同的方法名、参数列表和返回类型。
- 不能存在同一个类中,在继承或实现关系的类中。
方法重载又可称为什么?
方法重载也称为静态多态。
如何实现方法重载?
在Java中,一个类可以具有名称相同但参数不同的多个方法。 这称为方法重载。 要实现方法重载,我们必须在一个类中创建两个具有相同名称的方法,并执行以下一项/多项操作:
1.不同数量的参数
2.不同数据类型的参数
3.参数数据类型的不同顺序
方法重载允许哪些类型的参数变体?
方法重载允许两个具有相同名称的方法在以下方面有所不同:
1.参数数量
2.参数的数据类型
3.参数的数据类型顺序
为什么不能通过更改Java中方法的返回类型来进行方法重载?
如果我们更改重载方法的返回类型,则将导致模棱两可的行为。 客户将如何知道哪种方法将返回哪种类型。 由于这种不同,重载方法中不允许使用不同的返回类型。
是否可以在Java中重载main()方法?
是的,Java允许用户创建许多同名“ main”的方法。 但是只有公共静态void main(String [] args)方法用于执行。
我们如何在Java中实现方法重写?
为了覆盖一个方法,我们只是在子类中提供了一个具有相同名称的方法的新实现。 因此,至少有两个具有相同名称的方法的实现。 一种实现是在父类中。 另一个实现是在子类中。
是否允许重写Java中的静态方法?
否。Java不允许覆盖静态方法。 如果在子类中创建一个具有相同名称的静态方法,则它是一个新方法,而不是覆盖的方法。
为什么Java不允许重写静态方法?
要重写方法,您需要一个类的实例。 静态方法不与该类的任何实例关联。 因此,静态的概念不适用于此处。
因此,Java不允许重写/覆盖静态方法。
是否可以重写重载方法?
是。 您可以重写Java中的重载方法。
方法重载和方法重写之间有什么区别?
方法重载和覆盖之间的区别是:
1.方法重载是静态多态性。 方法重写是运行时多态。
2.方法重载发生在同一类中。 方法覆盖发生在两个具有层次关系的类中。
3.方法重载中的参数必须不同。 方法覆盖中的参数必须相同。
4.方法重载是一个编译时概念。 方法重写是运行时概念。
Java中的协变返回类型是什么意思?
方法的协变返回类型是一种在子类中重写该方法时可以用“更窄”类型替换的方法。
假设类 B 是类 A 的子类。类 A 和类 B 中都有一个 get()
方法。
类 A 的 get()
方法可以返回 A 的实例,而类 B 的 get()
方法可以返回 A 的实例和 B 的实例。在这里,类 B 覆盖了 get()
方法,但是返回类型不同。
在 Java 5 之前,任何覆盖父类方法的方法都将具有相同的返回类型。
从 Java 5 开始,子类可以覆盖父类的方法,并且子类方法可以返回作为父类方法返回的对象的子对象的对象。
- 点赞
- 收藏
- 关注作者
评论(0)