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