鏈枃鐢ㄥ埌鍚嶈瘝璇存槑:
鍐呴儴綾伙細(xì)Inner Class
宓屽綾伙細(xì)Static Nested Class 錛堜笌鏍囬?shù)笂鐨勫祵濂楃殑绫讳笉鍚屽Q屾澶勬槸涓撴湁鍚嶈瘝錛?/SPAN>
闈?rùn)鎬佸唴閮ㄧ被錛氬悓宓屽綾諱竴涓剰鎬濓紝涓鐗╀袱涓悕瀛楄屽凡銆?/SPAN>
鍦ㄤ笅闈紝鎴戜滑鐪嬪埌瀵逛簬B綾繪潵璇翠粬鐨勫祵濂楀眰嬈℃槸錛?/SPAN>AcessMethod-
銆?/SPAN>
A-
銆?/SPAN>
B
錛?/SPAN>
閭d箞璁塊棶鏂規(guī)硶濡備笅錛?/SPAN>
class
B {
void h() {
System.out.println("h()");
g();
f();
}
AcessMethod
鍜?/SPAN>
A
鏉ヨ瀵癸饑錛岄兘鏄忔槑鐨勶紝鐩存帴璋冪敤銆?/SPAN>
宓屽綾誨疄渚嬪寲鐨勯『搴忥細(xì)鏈夊鍒伴噷錛?/SPAN>
AcessMethod-
銆?/SPAN>
A-
銆?/SPAN>
B
璋冪敤浠g爜濡備笅錛?/SPAN>
AcessMethod am =
new
AcessMethod();
AcessMethod.A a = am.new A();
AcessMethod.A.B b = a.new B();
b.h();
榪欓噷寰堟湁鎰忔濈殑涓鐐癸紝
鈥?new鈥?/SPAN>
璇硶浜х敓浜?jiǎn)姝<嫯鐨勪綔鐢ㄥ煙銆?/SPAN>
鐤戦棶錛?/SPAN>涓嬮潰鎴戜滑鏉ョ湅涓涓嬪湪
B.h()
涓庢牱璋冪敤
A1.g()
鏂規(guī)硶錛?/SPAN>
涓嬮潰鎴戜滑鏉ョ湅鏄惁鍙互鍦?/SPAN>
B
涓皟鐢?/SPAN>
A1.g()
鏂規(guī)硶錛屽湪
B.h()
鏂規(guī)硶涓師鍒欎笂鍙互榪欐牱璋冪敤
A1.g()
浣嗘槸
A1
娌℃湁瀹炰緥鍖栵紝鎵浠ヨ繖鏍鋒槸閿欒鐨勶紝涔熷氨鏄湪
B
涓棤娉曡皟鐢?/SPAN>
A1
涓殑闈為潤(rùn)鎬佹柟娉曚簡(jiǎn)銆?/SPAN>
鍋囪錛?/SPAN>濡傛灉
A1.g()
涓?/SPAN>
static
綾誨瀷錛岄偅涔堝湪
B
涓彲浠ヨ繖鏍瘋皟鐢?/SPAN>
A1
縐嶇殑鏂規(guī)硶錛?/SPAN>
A1.this.g()
錛?/SPAN>
浣嗘槸榪欐槸涓嶅彲鑳界殑錛屽洜涓哄湪
A1.g()
涓嶅彲鑳藉畾涔変負(fù)
static
綾誨瀷錛岃緇嗙湅涓嬮潰鐨勯棶棰?/SPAN>
1
錛?/SPAN>
闂1:鍦ㄤ粈涔堟儏鍐典笅鍙互瀹氫箟static 鏂規(guī)硶錛夛紝榪欐槸涓涓己鐐瑰惂錛屼絾鏄彲浠ヤ嬌鐢ㄥ祵濂楃被鏉ヨВ鍐充簡(jiǎn)銆?/SPAN>
/**
*
浠庡灞傚祵濂楃被涓闂閮ㄧ被鐨勬垚鍛?/SPAN>
.
鈥?/SPAN>
.new
鈥滆娉曚駭鐢熶簡(jiǎn)姝g‘鐨勪綔鐢ㄥ煙
*/
public class AcessMethod {
private void f() {
System.out.println("f()");
}
class A1 {
private void g() {
System.out.println("A
}
}
class A {
private void g() {
System.out.println("g()");
}
class B {
void h() {
System.out.println("h()");
g();
f();
}
}
}
public static void main(String[] args) {
AcessMethod am = new AcessMethod();
AcessMethod.A a = am.new A();
AcessMethod.A.B b = a.new B();
b.h();
}
}
榪愯緇撴灉錛?/SPAN>
h()
g()
f()
闂1:鍦ㄤ粈涔堟儏鍐典笅鍙互瀹氫箟static 鏂規(guī)硶錛?/SPAN>
鍙湁鍦ㄩ《灞傜被涓畾涔夛紝鎴栬呭湪闈?rùn)鎬佸唴閮ㄧ被涓畾涔夛紝鐪嬩笅闈㈢殑渚嬪瓙
public class
Test {
static void t(){}
class T2{
//!
閿欒錛?/SPAN>
The method a cannot be declared static;
//static methods can only be declared in a static or top level type
//static void a(){}
}
static
class
T3{
static void a(){}
}
}