为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA方法调用查询

JAVA方法调用查询

慕容森 2021-09-03 13:50:15
class Temp{    private Temp(int data)    {        System.out.printf(" Constructor called ");    }    protected static Temp create(int data)    {Temp obj = new Temp(data);        return obj;    }    public void myMethod()    {        System.out.printf(" Method called ");    }}public class Test{    public static void main(String[] args)    {        Temp obj = Temp.create(20); //How this is a method call?        obj.myMethod();    }}在上面的程序中,注释行对我来说是不理解的吗?任何人都可以很好地解释如何使用对象创建调用静态方法
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

一个static方法意味着它可以在不创建一个类的对象,在你的例子被称为Temp项目。


 static Temp create(int data)

static你的方法中的词是什么让你这样做。然后可以以静态方式调用该方法,这意味着在您的示例中使用className.methodName,Temp.create()


并且由于您的方法正在返回一个Temp对象,因此您将其放入一个 Temp 对象中


Temp obj = Temp.create(20);

在Temp obj您将在您的方法中创建的对象的结果放在行中


{Temp obj = new Temp(data);

    return obj; //this is your object

}


查看完整回答
反对 回复 2021-09-03
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

class Temp

{

    private Temp(int data)

    {

        System.out.printf(" Constructor called ");

    }

    protected static Temp create(int data)

    {Temp obj = new Temp(data);

        return obj;

    }

    public void myMethod()

    {

        System.out.printf(" Method called ");

    }

}


public class Test

{

    public static void main(String[] args)

    {

        Temp obj = Temp.create(20); //How this is a method call?

        obj.myMethod();

    }

}

类的构造函数始终遵循相同的签名:[访问修饰符 -> 受保护、公共、私有、默认] [类的名称](参数)


所以,在你的代码中,


private Temp(int data) {

  System.out.printf(" Constructor called ");

}

是你的构造函数。


为了使用你的Temp类,至少是它的非静态成员,你需要一个类的实例才能使用它,但是,由于你的构造函数被声明为私有,一个实例只能在非常相同的班级。


这就是你在这里所做的:


protected static Temp create(int data)

        {Temp obj = new Temp(data);

            return obj;

        }

这个方法是一个静态方法,意味着一旦类加载到内存中,它就会“存在”,即使类没有被实例化。由于它被声明为受保护的,而不是私有的,因此它可以被 的子类以及Temp与 位于同一包中Temp的Test类使用,例如您的类。


您的Test类调用此方法,该方法调用构造函数,并将创建的实例返回给Test类。这种工作方式用于某些场景,例如,如果您想限制每个 VM 创建的实例数量,就像Singleton模式一样。


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信