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