我问的是这个问题,因为在Collection
我看到Arrays.sort()
被重载了,所以我想知道在类加载时加载静态方法时有人怎么说静态方法会被重载,并在课程加载时间后执行重载。
我的主要问题是:在课程加载时间后执行重载和覆盖;这就是为什么它们对象是可见的而对静态部分是不可见的。那么静态方法可以重载吗?
答案 0 :(得分:4)
编译时间和类加载时间不是一回事。并且运行时间(在我使用以下术语的意义上......)再次有所不同。
对于static
和实例方法调用,在编译时执行重载分析。对于一个static
方法阴影另一个static
方法的情况也是如此 - 它在编译时解析。
覆盖调度(例如方法)发生在运行时;即实际发生方法调用时,取决于作为“目标”对象的实际对象。
为什么Arrays.sort()在静态时会被重载
为什么不应该?
正如我所说,static
和实例方法都可以重载。 (重写仅限于实例方法和实例方法......但是重载可以用于各种方法,也可以用于构造函数。)
“加载”和“重载”也是完全不相关的概念。 “正在加载”是指将类(在本例中)引入内存,但“重载”是指具有相同名称的不同签名的不同方法。
答案 1 :(得分:0)
静态和动态多态都是多态的一部分。
在静态多态性中,重载在编译时解析,在动态时,它在运行时解析。尽管两者都是有效的超载情况。