Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法重载解决方案_Java_Oop_Inheritance_Overloading - Fatal编程技术网

Java 方法重载解决方案

Java 方法重载解决方案,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

如果class
B
扩展class
A
:以下代码的输出是什么

 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,引用是传递的。有关深入讨论,请参阅。