㈠ java中重载与重写的区别
java中有两个东西,一个是 方法重载 一个是 成员覆写 ,
方法重载 是指 一个类里面可以有多个方法,而且方法名称相同,但是方法的参数类型或者参数个数不同,功能也可以不同。
成员覆写 是指子类继承父类后,可以覆盖掉父类的 方法 和 属性。子类的方法和属性名称类型与父类的一样,就覆盖掉父类的属性和方法。
重载只能是方法,在同一个类中。
覆写是子类与父类之间,属性与方法都可以覆写。
其实重写就是重载,而令一个是覆写。
㈡ java中父类私有成员A(变量或方法),子类中也定义了同样的成员A。这是覆盖还是重载或者跟父类无关的成员A
在Java编程语言中,方法是可以被重写(override)的,而成员变量则不能。当子类中定义了一个与父类同名的方法时,这被称为方法的重写。然而,如果子类中定义了一个与父类同名的成员变量,那么这并不会导致方法重写。实际上,子类中的成员变量与父类中的成员变量是两个独立的实体,它们分别属于不同的作用域。
具体来说,当子类中定义了一个与父类同名的成员变量时,编译器会认为它们是两个不同的变量,一个属于父类(super),一个属于当前子类(this)。这并不会引发任何覆盖或重写的行为,因为成员变量的覆盖机制并不存在。
例如,假设父类中有一个私有变量x,子类中也定义了一个同名的变量x,那么在子类中,这两个x变量是完全独立的,互不影响。在父类的方法中访问x时,只会访问到父类中的x;而在子类的方法中访问x时,只会访问到子类中的x。这在编译和运行时都是正确的。
总结来说,成员变量的同名并不会导致覆盖或重写,它们各自独立存在,属于不同的作用域。理解这一点对于编写清晰、无误的Java代码至关重要。