Java 方法重载解决方案
如果classJava 方法重载解决方案,java,oop,inheritance,overloading,Java,Oop,Inheritance,Overloading,如果classB扩展classA:以下代码的输出是什么 package com.swquiz.overloading; public class TitBitOverloading7 { public static void main(String[] args) { overload((A)null); overload((B)null); } public static void overload(A a) { Sys
B
扩展classA
:以下代码的输出是什么
package com.swquiz.overloading;
public class TitBitOverloading7 {
public static void main(String[] args) {
overload((A)null);
overload((B)null);
}
public static void overload(A a) {
System.out.println("A");
}
public static void overload(B b) {
System.out.println("B");
}
}
Ans-AB
我不知道怎么做?你能解释一下null是如何处理的吗 您可以将null强制转换为任何引用类型,而不会得到任何异常 输出将是
A
B
因此,在方法调用期间将考虑发送的对象的类型。由于类型转换分别为a和B,因此将调用的方法由运行时传递的参数类型标识(多态性)
null是将传递给特定方法的引用值 Java是按值传递的,但为对象传递的值是对象引用。首先使用a的引用调用方法,然后使用B的引用调用方法,这是导致您行为的原因。对象值都是null,但引用值是A和B,引用是传递的。有关深入讨论,请参阅。