Java 使用包装器类重写方法

Java 使用包装器类重写方法,java,Java,输出:内部 有人能解释这个输出吗?通常应调用子方法。当我们有一个使用继承的包装类和一个基本类时,Java在这里是如何工作的?Bdisplay不会覆盖Adisplay,因为签名是不同的 整数可以装箱成整数这一事实与此无关 您可以通过使用@Override注释轻松验证这一点 由于a的引用类型是a,因此使用与给定的5参数(int)的文本整数的精确匹配来解析该方法,因此调用Adisplay 您仍然可以使用以下习惯用法强制调用Bdisplay,但不适用于生产代码: Ba.显示新的整数5 这将a变量强制转换

输出:内部

有人能解释这个输出吗?通常应调用子方法。当我们有一个使用继承的包装类和一个基本类时,Java在这里是如何工作的?

Bdisplay不会覆盖Adisplay,因为签名是不同的

整数可以装箱成整数这一事实与此无关

您可以通过使用@Override注释轻松验证这一点

由于a的引用类型是a,因此使用与给定的5参数(int)的文本整数的精确匹配来解析该方法,因此调用Adisplay

您仍然可以使用以下习惯用法强制调用Bdisplay,但不适用于生产代码:

Ba.显示新的整数5

这将a变量强制转换为B类型,从而允许在上下文中查看B的显示方法

它还传递一个整数而不是int,因此使用B的display方法的签名并允许解析该方法

b显示不覆盖Adisplay,因为签名不同

整数可以装箱成整数这一事实与此无关

您可以通过使用@Override注释轻松验证这一点

由于a的引用类型是a,因此使用与给定的5参数(int)的文本整数的精确匹配来解析该方法,因此调用Adisplay

您仍然可以使用以下习惯用法强制调用Bdisplay,但不适用于生产代码:

Ba.显示新的整数5

这将a变量强制转换为B类型,从而允许在上下文中查看B的显示方法


它还传递一个整数而不是int,因此使用B的display方法的签名并允许解析该方法

如果类A定义了方法并且不是抽象的,它将调用该方法。它只会使它过载。整数和int是两种不同的类型。@ 3KINS请再次查看代码。这是java,不是C++或C。所有方法都是Debug,B.displayInteger定义了方法,而不是抽象。它将调用该方法。方法不重写A.DISPINTINT。它只会使它过载。“整数”和“int”是两种不同的类型。@ 3King请再次查看代码。这是java,不是C++或C。所有方法都是默认的,默认为公共静态空格主字符串ARG[] {A=NeXB;A.DePosiePixGe5.5;Soal.Out.Print。现在输出是什么???}。当我在Display方法中传递Integer而不是int时的输出再次被调用。你能解释一下原因吗?@PriyankB由于B中的display方法没有覆盖A中的方法,因此在给定的A引用下,Adisplay仍然被调用。此外,您在上下文中对Bdisplay没有可见性,因为您的引用类型是A.public static void main String args[]{A A A=new B;A.displaynew integer5;System.out.println现在的输出是什么???;}当我在Display方法中传递Integer而不是int时,再次调用A的Display。你能解释一下原因吗?@PriyankB由于B中的display方法没有覆盖A中的方法,因此在给定的A引用下,Adisplay仍然被调用。此外,由于引用类型是A,因此在上下文中无法看到Bdisplay。
public class A
{
    public void display(int i)
    {
        System.out.println("Inside A");
    }
}

public class B extends A
{
    public void display(Integer i)
    {
        System.out.println("Inside B");
    }
}


public class starter
{
    public static void main (String args[])
    {
        A a = new B();
        a.display(5);
        System.out.println("So now you know or not");
    }
}