亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

到底什么情況下加了private的成員變量不能被修改和調用?

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方法才能修改或者獲取嗎?


正在回答

2 回答

這要從private作用域說起,private修飾的變量只能被這個類內部調用,不能被外部對象直接調用,而內部類也屬于這類本身的一部分,所以可以調用

3 回復 有任何疑惑可以回復我~
#1

燃燒wzy風3961169 提問者

非常感謝!
2017-07-19 回復 有任何疑惑可以回復我~
#2

srecko

但是把內部類Inner的方法public void show()變成private void show()后,外部類仍然可以訪問內部類的private,就是說“private修飾的變量只能被這個類內部調用”這句話不適用于內部類這種情況。
2017-07-27 回復 有任何疑惑可以回復我~

你的private給的是外部類,你的內部類的name沒有private,內部類的對象調用的是內部類的name。

0 回復 有任何疑惑可以回復我~
#1

燃燒wzy風3961169 提問者

不是啊,show()方法里第一個就調用了外部類的name
2017-07-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

到底什么情況下加了private的成員變量不能被修改和調用?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號