如果我想从另一个类调用一个类的多个方法,我可以通过仅使用' new classname()'来调用它们。没有在课程参考中捕捉它?
public class Example {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new pqr().a=5;
new pqr().b=10;
new pqr().display();
}
}
class pqr
{
int a,b;
public void display()
{
System.out.println(a+" "+b);
}
}
答案 0 :(得分:5)
这会创建三个新对象。不只是一个。
new pqr().a=5;
new pqr().b=10;
new pqr().display();
一个对象a = 5,另一个对象b = 10.
请记住,您没有使用一个对象。
每当您使用新关键字时。 JVM创建一个新对象。
答案 1 :(得分:3)
如果我想从另一个类调用一个类的多个方法,我可以通过仅使用'new classname()'来调用它们而不在类引用中捕获它吗?
目前尚不清楚“抓住它”是什么意思,但 使用引用...你只是不将它分配给变量。
在您的示例中,您创建了三个不同的对象 - 最后一行的计算只打印0,因为您只在其他对象中设置了a
和b
。如果要将单个对象用于多个操作,则 需要将引用存储在变量中,否则这些操作必须返回“this”,允许您将方法调用链接在一起:
class Sample {
private int a,b;
public void display() {
System.out.println(a+" "+b);
}
public Sample setA(int a) {
this.a = a;
return this;
}
public Sample setB(int b) {
this.b = b;
return this;
}
}
...
new Sample().setA(5).setB(10).display();
这种对setter的链接在构建器模式中很常见。
答案 2 :(得分:0)
如果你想要这样的话,你可以使用Builder模式:
NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).
calories(100).sodium(35).carbohydrate(27).build();
答案 3 :(得分:0)
构建器模式是一种可能性。另一个是具有静态属性,因此所有对象都将共享它的值。
static int a,b;