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