㈠ java中 通过子类怎么调用父类已经被重写的方法
在Java中,如果子类重写了父类的方法,但仍然希望调用父类被重写的方法,可以通过使用super关键字来实现。
答案如下:
子类重写父类方法:
- 子类可以通过使用@Override注解来重写父类的方法。这样,当在子类的实例上调用该方法时,将执行子类的实现。
调用父类被重写的方法:
- 在子类中,可以通过super.方法名的方式来调用父类被重写的方法。这允许子类在执行自己的逻辑之前或之后,调用父类的相应方法。
示例代码说明:
- 在提供的示例代码中,Parent类有一个who方法,打印出”I’m parent”。
- Child类继承了Parent类,并重写了who方法,打印出”I’m child”。
- Child类还定义了一个parentWho方法,在该方法中通过super.who调用了父类的who方法。
- 在main方法中,创建了Parent和Child的实例,并分别调用了它们的who方法。此外,还通过Child的实例调用了parentWho方法,以展示如何通过super调用父类被重写的方法。
执行结果:
- parent.who; 将输出 “I’m parent”。
- child.who; 将输出 “I’m child”。
- child.parentWho; 将输出 “I’m parent”,因为这是在子类中通过super.who调用的父类方法。
通过这种方式,子类可以在需要时调用父类的实现,同时保留重写方法的灵活性。
㈡ Java中方法重写和方法重载的6个区别
Java中方法重写(Override)和方法重载(Overload)的6个区别如下:
1. 概念定义
- 方法重写:是子类重新定义父类中已有的方法,且子类中的方法名和参数类型及个数都必须与父类保持一致。
- 方法重载:是在同一个类中定义了多个同名方法,但这些同名方法的参数类型或参数个数不同。
2. 使用范围
- 方法重写:发生在父类与子类之间,是子类对父类方法的重新实现。
- 方法重载:发生在同一个类中,是类中方法的多样化实现。
3. 关键字
- 方法重写:在子类的方法定义前需要使用@Override注解(虽然不是必须的,但推荐使用以提高代码可读性),表明该方法是对父类方法的重写。
- 方法重载:不需要使用任何特殊的关键字或注解,仅通过方法名和参数的不同来区分。
4. 参数类型和参数个数
- 方法重写:子类重写的方法必须与父类方法具有完全相同的参数类型和参数个数。
- 方法重载:同一个类中重载的方法可以有不同的参数类型和/或参数个数。
5. 返回类型
- 方法重写:子类重写的方法的返回类型可以是父类方法返回类型的子类型(即协变返回类型),但不能是父类返回类型的父类型或其他不相关的类型。在Java 5及以后的版本中,允许协变返回类型。
- 方法重载:重载方法的返回类型可以相同,也可以不同,但返回类型不是重载的区分条件。
6. 异常处理和权限控制符
- 方法重写:子类重写的方法不能抛出比父类方法更多或更广泛的检查型异常(checked exception)。同时,子类方法的权限控制符不能比父类方法的权限控制符更严格(例如,父类方法是public,子类方法不能是protected或private)。
- 方法重载:重载方法之间可以抛出不同的异常,也可以有相同的异常处理。重载方法的权限控制符也可以不同,但这与重载的定义无关,只是方法的不同实现。
以下是相关图片展示,帮助理解方法重写和方法重载的区别:

综上所述,方法重写和方法重载在Java中都是多态性的体现,但它们在概念、使用范围、关键字、参数类型和参数个数、返回类型以及异常处理和权限控制符等方面存在明显的区别。
㈢ java中方法重写和重载的区别
在Java中,方法重写和方法重载是两个重要的概念,它们虽然名字听起来相似,但在实现方式和应用场景上有着本质的区别。
方法重写是指子类继承自父类后,对父类中已经存在的方法进行重新定义。重写的方法必须满足三个条件:方法名、参数列表和返回类型必须与父类中被重写的方法完全一致。例如,如果父类定义了一个方法public String fun(),子类可以继承此方法并重写为public String fun(),但子类方法返回的字符串会是“son”而非“father”。
而方法重载则是指在一个类中定义多个同名但参数不同的方法。重载的方法可以是对本类方法的重载,也可以是对父类方法的重载。例如,在同一个类中可以定义public String fun(int a)、public String fun(String b)、public String fun(int a, String b)等方法,这些方法虽然名称相同,但参数列表不同。
值得注意的是,方法重载在实现时并不考虑访问修饰符和返回值类型,只要方法名和参数列表不同即可。因此,public String fun(int a)和public String fun(String b)是重载关系,而public String fun(int a)和public String fun(int b)则不是。
理解方法重写和重载对于编写高质量的Java代码至关重要。正确使用这两个概念可以帮助开发人员更好地组织代码结构,提高代码的可读性和可维护性。