java 继承时,子类存在和父类相同的属性和方法会怎么样?

如题所述

您好,
在 Java 中,如果子类存在和父类相同的属性和方法,则子类会覆盖父类的属性和方法。这种情况下,子类会继承父类的属性和方法,但是如果子类重新定义了和父类相同的属性和方法,则子类的属性和方法会覆盖父类的属性和方法。
如果子类覆盖了父类的方法,那么在调用该方法时,实际上会调用子类的方法而不是父类的方法。这就是所谓的方法重写(overriding)。
当子类存在和父类相同的属性时,子类可以使用 super 关键字调用父类的属性。这种情况下,子类的属性会覆盖父类的属性。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-09

在 Java 中,当子类继承父类时,如果子类中存在与父类相同的属性或方法,Java 会根据不同情况做出不同的处理:

    属性重名:

    如果子类中定义了与父类同名的属性,则子类中的属性会覆盖父类中的同名属性。在子类对象中访问该属性时,将优先访问子类中的属性。

2. 方法重载:

如果子类中定义了与父类同名的方法,但是参数列表不同(即发生了方法重载),则不会影响父类中的同名方法。在子类对象中调用该方法时,会根据参数类型选择合适的方法。

3. 方法重写:

如果子类中定义了与父类同名、同参数列表、同返回值类型的方法,那么子类中的方法就覆盖了父类中的同名方法。在子类对象中调用该方法时,将优先调用子类中的方法。

需要注意的是,子类中的属性和方法访问修饰符不能严格比父类小。也就是说,如果父类中的属性和方法是 public ,那么子类中对应的属性和方法至少也要是 public,否则会编译报错。

相似回答