亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號