【问题标题】:Why do we pass objects as arguments in java?为什么我们在 java 中将对象作为参数传递?
【发布时间】:2014-03-12 09:00:06
【问题描述】:
Box mybox = new Box(1,2);
Box mybox2 = new Box(mybox);

我知道如何将对象作为参数传递,但我需要知道它们在编程中的用途。

它有什么用处?

请告诉我。提前致谢。

【问题讨论】:

    标签: java object parameters arguments


    【解决方案1】:

    它几乎只是用来复制对象。它可以以反复试验的方式使用,或者类似于保存状态。

    以记事本为例,您保存一个包含 5 个单词的文档,然后在其中再写 5 个单词。它几乎重复了自己并添加了 5 个单词。

    似乎真的很难解释。

    如果有意义的话,您可以在不更改原始框的情况下更改复制框。

    希望对您有所帮助。

    贾罗德。

    【讨论】:

    • 谢谢,我明白了一点。但是还是很迷茫。我的意思是,当您可以简单地传递变量或使用输入时,为什么需要将对象作为变量传递?
    • 简单的缘故我猜...例如,矩形:Rectangle() - Rectangle(int width, int height) - Rectangle(int x, int y, int width, int height) - Rectangle(Rectangle r) 您可以有一个空白矩形,一个 0,0 处的矩形宽度和高度,x,y 处的矩形,具有宽度和高度,或者从原始复制的矩形......所以不要一直输入 x,y,宽度,高度,你可以写,rect .对不起,我还是很困惑。 :P
    【解决方案2】:

    Box mybox2 = new Box(mybox);本质上是一个拷贝构造函数。

    在您的构造函数中,您最好将 myBox 的属性复制到 myBox2 中。

    几个好处:

    • 克隆方法的替代方法
    • 只需提取参数的数据,即可转发到 常规构造函数
    • 可以与不可变对象一起使用
    • 当您拥有具有许多属性的对象并想要复制它们时

    也不错:Josh Bloch on Design

    【讨论】:

    • 你好,我知道。但我想知道我们为什么要这样做?例如,构造函数用于初始化变量。我需要这样的答案。将对象作为参数传递的原因是什么?
    【解决方案3】:

    这是一个非常广泛的问题 ;) 尝试以更简单的方式思考 Objects

    编程中的对象就像现实世界中的对象。比如“门”。门是一个对象,该对象具有某些属性。例如,它可以由木头制成,并且可以具有蓝色。然后这扇门可以附加其他物体。比如“门把手”。在 Java 中,这可能如下所示:

    public class Door{
       String color;
       String material;
       Knob doorKnob;
    
       public Door(String color, String material, Knob doorKnob){
          this.color = color;
          this.material = material;
          this.doorKnob = doorKnob;
       }
    }
    
    
    public class Knob{
    
       String material;
    
       public Knob(String material){
            this.material = material;
       }
    }
    
    // then when you want to create your door you first have to get a doorknob
     .... 
     Knob myDoorKnob = new Knob("chrome");
    
     Door myDoor = new Door("blue", "wood", myDoorKnob);
    

    你有它。你的门需要另一个对象——门把手。因此,在您的示例中,您将 Box 对象传递给另一个 Box 对象,可能就像其他人所说的将盒子属性复制到新盒子中一样:

    public class Box{
       String content;
    
       public Box(Box that){
         this.content = that.getContent();
       }
    
       public String getContent(){
         return this.content;
       }
    }
    

    【讨论】:

    • 哇,谢谢伙计。一个明确的答案。哇,现在我明白了这个概念了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多