与Java编程的混淆

与Java编程的混淆,java,Java,我已经开始学习核心Java,有一件事让我发疯。我知道如何创建对象 差不多 Mouse mouse = new Mouse (); 然而,我不明白的是这些是否也是对象: Connection conn = DriverManager.getConnection(url, user, password); Statement st = conn.createStatement(); ResultSet rs1 = st.executeQuery(""); 如果不是,它们是什么?如果有人能澄清我的

我已经开始学习核心Java,有一件事让我发疯。我知道如何创建对象

差不多

Mouse mouse = new Mouse ();
然而,我不明白的是这些是否也是对象:

Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
ResultSet rs1 = st.executeQuery("");

如果不是,它们是什么?如果有人能澄清我的疑惑,我将不胜感激。

是的:conn、st和rs1是对象(实例),即使您没有直接实例化它们

例如康涅狄格州:

  • 可能是getConnection实例化的
  • 可能是由getConnection调用的方法实例化的
  • 可能它已经存在,getConnection刚刚返回了它

是:conn、st和rs1是对象(实例),即使您没有直接实例化它们

例如康涅狄格州:

  • 可能是getConnection实例化的
  • 可能是由getConnection调用的方法实例化的
  • 可能它已经存在,getConnection刚刚返回了它

是的,
conn
st
rs1
在您的示例中都是对象,就像
鼠标一样。您正在使用构造函数创建鼠标,如下所示:

Mouse mouse = new Mouse()
但是,您也可以轻松地将
静态
方法添加到您的
鼠标
,该方法将创建
鼠标
的新实例,就像
DriverManager.getConnection(url、用户、密码)一样返回
语句的新实例
。例如:

public class Mouse {

    public Mouse() { }

    public static Mouse createNewMouse() { 
        return new Mouse();
    }

 }
然后不用构造函数,你也可以简单地说

Mouse mouse = Mouse.createNewMouse();

对于
Mouse
类,没有很好的理由使用这样的静态方法。然而,正如一些评论所提到的,有一种称为的设计模式,它可以隐藏实例化复杂对象的一些复杂性

是的,
conn
st
rs1
在您的示例中都是对象,就像
鼠标
。您正在使用构造函数创建鼠标,如下所示:

Mouse mouse = new Mouse()
但是,您也可以轻松地将
静态
方法添加到您的
鼠标
,该方法将创建
鼠标
的新实例,就像
DriverManager.getConnection(url、用户、密码)一样返回
语句的新实例
。例如:

public class Mouse {

    public Mouse() { }

    public static Mouse createNewMouse() { 
        return new Mouse();
    }

 }
然后不用构造函数,你也可以简单地说

Mouse mouse = Mouse.createNewMouse();

对于
Mouse
类,没有很好的理由使用这样的静态方法。然而,正如一些评论所提到的,有一种称为的设计模式,它可以隐藏实例化复杂对象的一些复杂性

我们可以扩展您的鼠标示例:

class Mouse {
  private String name;

  public Mouse() {
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

  public Mouse makeDropping() {
    return new Dropping(this);
  }

  public static Mouse createMouse(String name) {
    Mouse mouse = new Mouse();
    mouse.setName(name);
    return mouse;  
  }
}

class Dropping {
  private Mouse;

  public Dropping(Mouse mouse) {
    this.mouse = mouse;
  }

  public String mouseName() {
    return this.mouse.getName();
  } 
}

我们可以使用构造函数创建鼠标对象:

Mouse mickey = new Mouse();
mickey.setName("Mickey");
new Mouse()
创建对象,
mickey
是对该对象的引用

我们还可以使用鼠标类的静态工厂方法创建鼠标:

Mouse jerry = Mouse.createMouse("Jerry");
Mouse.createMouse(“Jerry”)
返回对它创建的鼠标对象的引用,并将其设置为
Jerry


现在,如果我们在
鼠标上调用
makedroping()
方法,它们将返回一个
droping
对象

Dropping mickeyDropping = mickey.makeDropping();
Dropping jerryDropping = jerry.makeDropping();
我们不需要知道
droping
对象是在哪里创建的,我们仍然有一个对
droping
对象的引用

Dropping mickeyDropping = mickey.makeDropping();
Dropping jerryDropping = jerry.makeDropping();


在拖放对象上调用
mouseName()
方法也会返回引用,这次是一个字符串

我们可以扩展您的鼠标示例:

class Mouse {
  private String name;

  public Mouse() {
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

  public Mouse makeDropping() {
    return new Dropping(this);
  }

  public static Mouse createMouse(String name) {
    Mouse mouse = new Mouse();
    mouse.setName(name);
    return mouse;  
  }
}

class Dropping {
  private Mouse;

  public Dropping(Mouse mouse) {
    this.mouse = mouse;
  }

  public String mouseName() {
    return this.mouse.getName();
  } 
}

我们可以使用构造函数创建鼠标对象:

Mouse mickey = new Mouse();
mickey.setName("Mickey");
new Mouse()
创建对象,
mickey
是对该对象的引用

我们还可以使用鼠标类的静态工厂方法创建鼠标:

Mouse jerry = Mouse.createMouse("Jerry");
Mouse.createMouse(“Jerry”)
返回对它创建的鼠标对象的引用,并将其设置为
Jerry


现在,如果我们在
鼠标上调用
makedroping()
方法,它们将返回一个
droping
对象

Dropping mickeyDropping = mickey.makeDropping();
Dropping jerryDropping = jerry.makeDropping();
我们不需要知道
droping
对象是在哪里创建的,我们仍然有一个对
droping
对象的引用

Dropping mickeyDropping = mickey.makeDropping();
Dropping jerryDropping = jerry.makeDropping();


在拖放对象上调用
mouseName()
方法也会返回引用,这次是一个字符串

使用方法创建并返回新对象的技术称为。使用方法创建并返回新对象的技术称为。