我是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行,我们返回“尺寸”,为什么不使用“返回新尺寸”返回对象。在某些文章中,我看到了它们的用法。那么,在哪种情况下我们应该使用“新”,而不应该使用?
谢谢。
答案 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;
}