java 方法覆盖和静态方法存在方法覆盖吗?

私有方法不能被覆盖
方法覆盖只是针对于“实例方法”,“静态方法覆盖”没有意义。(这是因为方法覆盖通常和多态联系在一块。)

1、方法覆盖需要和多态机制联合起来使用才有意义。
Animal a = new Cat();
a.move();
要的是什么效果?
编译的时候 move() 方法是 Animal 的。运行的时候自动调用到子类重写 move() 方法上。
假设没有多态机制,只有方法覆盖,你觉得有意义吗?
没有多态机制的话,方法覆盖可有可无。
没有多态机制,方法覆盖也可以没有,如果父类的方法无法满足子类业务需求的时候,
子类完全可以定义一个全新的方法。
方法覆盖和多态不能分开。

2、静态方法存在方法覆盖吗?
多态自然就和对象有关系了。而静态方法的执行不需要对象。
所以,一般情况下,我们会说静态方法“不存在”方法覆盖。不探讨静态方法的覆盖。

总结:
私有不能覆盖。
静态不谈覆盖。

在外部类中无法访问私有的。

在方法覆盖中,关于方法的返回值类型。
什么条件满足之后,会构成方法的覆盖呢?
1、发生具有继承关系的两个类之间。
2、父类中的方法和子类重写之后的方法:
具有相同的方法名、相同的形式参数列表、相同的返回值类型。
学习了多态机制之后,“相同的返回值类型”可以修改一下吗?
对于返回值类型是基本数据类型来说,必须一致。
对于返回值类型是引用数据类型来说,重写之后返回值类型可以变的更小(但意义不大,不建议这样写)
重写最好复制粘贴。不改返回值类型。

你可能感兴趣的:(java,jvm,开发语言)