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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.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
((类名)InstanceName)在java中有什么用途?_Java_Oop - Fatal编程技术网

((类名)InstanceName)在java中有什么用途?

((类名)InstanceName)在java中有什么用途?,java,oop,Java,Oop,我从书上看到的 class AAA { } class BBB extends AAA { public static void main(String[] args) { BBB bb = new BBB(); System.out.println(bb.equals((AAA) bb)); // true System.out.println(bb.equals((BBB) bb)); // true } } 简单

我从书上看到的

class AAA {

}

class BBB extends AAA {


    public static void main(String[] args) {
        BBB bb = new BBB();
        System.out.println(bb.equals((AAA) bb));  // true
        System.out.println(bb.equals((BBB) bb));  // true
    }
}
简单地说,BBB是AAA的一个子类

但是,当创建BBB
bb
的实例时,我看到了括号中的类名,然后该实例被用于其他地方。所以我测试了平等性,似乎
bb
((AAA)bb)
((BBB)bb)
相同

那么为什么要用这个呢?目的何在


谢谢,

您在这里看到的是强制转换,在本例中是显式强制转换,因为您告诉编译器“bb”将是类“AAA”的实例。这允许您调用特定的“AAA”类方法,即使“bb”被实例化为“BBB”类。 如果您想了解更多信息,可以阅读有关“多态性”和“铸造”的oracle文档

请参见此链接中的“铸造对象”:

由JP编辑
然而,有一个相当反常的情况,当公共领域隐藏在儿童课堂上。在这种情况下,您应该强制转换到父类以访问隐藏字段(可能与在子类中声明的类型不同)

请参阅:


您是在询问平等性,还是特别是
(AAA)
部分?后者被称为“cast”。但由于BBB是AAA的一个子类,所以bb将自动继承AAA的所有方法,那么我为什么需要强制转换呢?@Code\u Control\u jxie0755您不需要。您正在将同一对象与其自身进行比较。演员阵容没有意义,整个例子也没有多大意义。准确地说:演员阵容没有改变任何事情。强制转换不会改变对象的运行时性质!