Java方法重写、重载、多态问题
Java规定,在子类当中可以重写继承自父类的方法
不论是继承的 实例方法 还是 静态方法 都可以进行重写
(1)如果重写的方法的 方法名称、参数列表完全不变 且有相容的返回值类型
那么这个新的方法会将父类的方法给隐藏掉,即 当用子类的对象调用此方法
时,会自动调用新写的这个方法
(2)如果重写的方法的 方法名称相同、有相容的返回值类型 , 但是参数列表
不相同的话,则新写的方法与原来父类的方法就形成了重载方法 , 同时成为
子类的可见的成员函数
(3)子类重写的方法不能比父类中被重写的方法拥有更加严格的访问权限,即 不能
缩小父类方法的访问权限
(4)对于多态调用来说应该注意以下这几个问题:
1、如果子类与父类同时拥有同名同参数的静态方法,这时通过子类名调用这个静态方法
时,自然调用的是子类重写的这个静态方法
2、如果子类与父类同时拥有同名,但不同参数的静态方法,则这两个方法会形成重载
当通过子类名调用时会依据参数不同调用对应的静态方法
3、如果子类与父类同时拥有同名同参数的静态方法,将子类的实例对象向上转型赋予
父类的引用变量,通过父类的引用变量调用这个静态方法时(而不是通过类名调用),
只会自动调用父类的静态方法,而不是子类的;可见静态方法与实例方法是不同的
静态方法不存在动态多态性,动态多态性只是针对于非静态成员方法

浙公网安备 33010602011771号