与Java编程的混淆
我已经开始学习核心Java,有一件事让我发疯。我知道如何创建对象 差不多与Java编程的混淆,java,Java,我已经开始学习核心Java,有一件事让我发疯。我知道如何创建对象 差不多 Mouse mouse = new Mouse (); 然而,我不明白的是这些是否也是对象: Connection conn = DriverManager.getConnection(url, user, password); Statement st = conn.createStatement(); ResultSet rs1 = st.executeQuery(""); 如果不是,它们是什么?如果有人能澄清我的
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刚刚返回了它
- 可能是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()
方法也会返回引用,这次是一个字符串 使用方法创建并返回新对象的技术称为。使用方法创建并返回新对象的技术称为。