public?class?HelloWorld{
????
????//外部類(lèi)的私有屬性name
????private?String?name?=?"imooc";
????
????//外部類(lèi)的成員屬性
????int?age?=?20;
????
//成員內(nèi)部類(lèi)Inner
public?class?Inner?{
String?name?=?"愛(ài)慕課";
????????//內(nèi)部類(lèi)中的方法
public?void?show()?{?
System.out.println("外部類(lèi)中的name:"?+?HelloWorld.this.name?????????????????);
System.out.println("內(nèi)部類(lèi)中的name:"?+?name?????????????????);
System.out.println("外部類(lèi)中的age:"?+?age);
}
}
????
//測(cè)試成員內(nèi)部類(lèi)
public?static?void?main(String[]?args)?{
????????
????????//創(chuàng)建外部類(lèi)的對(duì)象
HelloWorld?o?=?new?HelloWorld?();?
????????
????????//創(chuàng)建內(nèi)部類(lèi)的對(duì)象
Inner?inn?=?o.new?Inner();?????????????;
????????
????????//調(diào)用內(nèi)部類(lèi)對(duì)象的show方法
inn.show();
}
}
比如這個(gè)外部類(lèi)的成員變量name的值加了private為什么還能被內(nèi)部類(lèi)的對(duì)象來(lái)訪問(wèn)和修改變量,不是應(yīng)該用個(gè)體特然和setter方法才能修改或者獲取嗎?
2017-07-19
這要從private作用域說(shuō)起,private修飾的變量只能被這個(gè)類(lèi)內(nèi)部調(diào)用,不能被外部對(duì)象直接調(diào)用,而內(nèi)部類(lèi)也屬于這類(lèi)本身的一部分,所以可以調(diào)用
2017-07-19
你的private給的是外部類(lèi),你的內(nèi)部類(lèi)的name沒(méi)有private,內(nèi)部類(lèi)的對(duì)象調(diào)用的是內(nèi)部類(lèi)的name。