没有“ new”关键字的传递和返回类对象

时间:2018-11-25 12:47:29

标签: java oop object

我是Java新手,正在阅读与传递类并在Java OOP中返回类有关的一些问题,但不幸的是找不到答案。因此,我提出了我的问题,希望大家可以随意分享您的想法。

假设我们有一个关于Composition的代码块,“一个案例在类“ dimension”中具有定义的维度:

public class Case {
private String model;
private Dimensions dimensions;

public Case(String model, Dimensions dimensions) {   // line AAA
    this.model = model;
    this.dimensions = dimensions;
}

public Dimensions getDimensions() { 
    return dimensions; //line BBB

Question1 :在AAA行,我们将“ Dimensions Dimensions”作为参数传递给构造函数,为什么不对实例对象使用“ new”关键字

问题2 :在BBB行,我们返回“尺寸”,为什么不使用“返回尺寸”返回对象。在某些文章中,我看到了它们的用法。那么,在哪种情况下我们应该使用“新”,而不应该使用?

谢谢。

3 个答案:

答案 0 :(得分:2)

  

问题1:在AAA行,我们将“ Dimensions Dimensions”传递到   构造函数作为参数,为什么不对实例使用“ new”关键字   对象

通常,您将传递已创建的对象,如下所示:

String model = "myModel";
Dimensions dim = new Dimensions(); 
Case case = new Case(model, dim);

因此,现在case对象的Dimensions变量将保存对通过构造函数传递的Dimension对象的引用。

  

问题2:在BBB行,我们返回“尺寸”,为什么不使用“返回”   新维度”以返回对象。在某些文章中,我看到了它们的使用。   那么,在哪种情况下我们应该使用“新”,而不应该使用?

方法getDimensions()是一种getter方法,这意味着我们要获取this对象维的值。因此,返回新的尺寸对象没有任何意义。要获取上面创建的case对象的尺寸,请使用:

Dimensions caseDimension = case.getDimensions();

答案 1 :(得分:0)

示例中的Dimensions实例是在Case类之外构造的。

例如,该类的可能用法是:

Dimensions dim = new Dimensions ();
Case c = new Case ("something", dim);

及以后

Dimensions d = c.getDimensions();

如您所见,我们正在将对Dimensions对象的引用传递给Case构造函数。 Case构造函数将该引用存储在实例变量(dimensions)中,稍后我们可以调用getDimensions()方法以获得该引用。

仅在要构造类的新对象时才使用new关键字。

答案 2 :(得分:0)

我想在您的子问题中添加答案: 在某些文章中,我看到它们使用了。

假设您的Case中有一个方法,该方法旨在以某种方式更改尺寸并将其返回,例如    public Dimensions stretch()。 在这种情况下,您可以使用    return new Dimensions();

public Dimensions stretch(//some arguments){
    this.dimensions = new Dimensions(//args);
    return dimensions;
}