java基础,静态方法的重写问题

Java中静态方法不能被重写,虽然语法上允许。静态方法调用取决于编译时类型,而非运行时对象类型。当父类静态方法为private时,子类即使有同名静态方法也会报错,因为静态方法不涉及多态和动态绑定。直接通过类调用静态方法只与方法定义的位置有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        静态方法在语法上来说,于子类中重写是没有问题的,但是没有意义。

        1 如果用父类的编译来引用子类的对象,再调用同名静态方法

         

        可以发现,调用的是编译类型AA的 aa()方法。

       2 如果将AA中的修饰符改为private ,则会报错。

         个人理解:如果编译类型是AA,运行类型是子类BB,那么调用用 aa() 方法,是会对BB中的 aa() 视而不见的,会调用AA中的该静态方法。但是运行方法时又是会在BB的对象内调用,所以如果访问权限不够,就无法访问到该方法。

        可见静态方法没有重写一说,与属性一样,无法触发动态绑定机制。

        3直接使用类调用静态方法,两者则不牵扯。该输出什么就输出什么。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值