Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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_Superclass_Super - Fatal编程技术网

在Java中返回超级构造函数之前括号的重要性?

在Java中返回超级构造函数之前括号的重要性?,java,superclass,super,Java,Superclass,Super,我正在研究如何使用clone方法()进行深度复制(这不是我的想法,而是我的教授们的想法),我一直在看他们在使用超级构造函数之前将类类型放在括号中的代码 @Override protected Rectangle clone() throws CloneNotSupportedException { return (Rectangle) super.clone(); } super.clone()之前使用的(矩形)有什么意义 我还看到了在使用时使用此选项: public void ac

我正在研究如何使用clone方法()进行深度复制(这不是我的想法,而是我的教授们的想法),我一直在看他们在使用超级构造函数之前将类类型放在括号中的代码

@Override
protected Rectangle clone() throws CloneNotSupportedException {
    return (Rectangle) super.clone();
}
super.clone()之前使用的(矩形)有什么意义

我还看到了在使用时使用此选项:

 public void actionPerformed(ActionEvent e) {
      if ((Rectangle)(e.getSource())).getAngle1() == 60){
          System.out.println("Angle is 60");
        } 
  }
这是使用(矩形)做同样的事情吗

我正试图找到这方面的文档,但在谷歌上搜索时遇到了麻烦。有人能解释一下或者给我指出正确的位置吗?谢谢大家!

编辑:这已经被标记为一个副本,我刚刚读了“重复文章”,它继续解释打字。 有人能解释一下如何将ActionEvent类型转换到另一个类中吗?围绕这一点的继承是如何运作的?从我的角度来看,ActionListner似乎并没有继承矩形中的任何内容,那么它是如何进行类型转换的呢?对超级构造函数进行类型转换也是一样的。如果我使用的是超级构造函数,它不是矩形类型吗?


答:您需要输入cast一个克隆的超级构造函数,因为克隆方法返回的是一个对象而不是一个矩形

搜索“Java中的铸造”。另一个骗局:@antonH Ok,我知道铸造是什么,但我不知道你可以铸造方法?以及构造函数?这里可能值得指出的是,您必须强制转换调用clone的结果的原因是clone返回一个对象。如果你觉得这很奇怪,那是它的最小问题,因为克隆方法被称为“坏了”(参见Java中的Joshua Bloch)。@cicero866你不是在铸造方法,而是铸造方法返回的对象。无论你是直接施放,还是从mthod返回,都没有区别。