在外部類的方法中為什么我可以直接創(chuàng)建內(nèi)部對象??
為什么public?void?outer_2(){}這個方法里我直接就創(chuàng)建了一個內(nèi)部類的對象???Inner?inner=new?Inner();不是說內(nèi)部類的對象要先通過先創(chuàng)建外部類對象然后通過外部類對象.new?Inner()的形式創(chuàng)建嗎??
為什么public?void?outer_2(){}這個方法里我直接就創(chuàng)建了一個內(nèi)部類的對象???Inner?inner=new?Inner();不是說內(nèi)部類的對象要先通過先創(chuàng)建外部類對象然后通過外部類對象.new?Inner()的形式創(chuàng)建嗎??
2016-11-20
舉報
2016-11-20
這個你首先要清楚內(nèi)部類與外部類的關(guān)系,
必須先有外部類的對象才能生成內(nèi)部類的對象,因為內(nèi)部類的作用就是為了訪問外部類中的成員變量
在其他地方需先創(chuàng)建外部類對象的原因是:通過外部類對象傳遞一個外部類的引用給將要創(chuàng)建的內(nèi)部類,然后通過外部類對象.new?Inner()的形式創(chuàng)建,但是在包含本內(nèi)部類的外部類的方法中,引用本就包含在類中,因此可以直接創(chuàng)建內(nèi)部類對象,其實new?Inner()在外部類的方法中相當(dāng)于this.new?Inner()
2016-11-20
簡單舉個例,不拿內(nèi)部類來說,對于方法調(diào)用
的作用是一樣的,從某種意義上來說,this等價于本類的對象。
(本人新手,有不對的的地方歡迎指正)
2016-11-20
我覺得是外部類和內(nèi)部類不同名 ?不過應(yīng)該不是這個