1銆佸唴閮ㄧ被鍒嗕負鎴愬憳鍐呴儴綾匯侀潤鎬佸祵濂楃被銆佹柟娉曞唴閮ㄧ被銆佸尶鍚嶅唴閮ㄧ被銆?br />
鍑犵鍐呴儴綾葷殑鍏辨э細
A銆佸唴閮ㄧ被浠嶇劧鏄竴涓嫭绔嬬殑綾伙紝鍦ㄧ紪璇戜箣鍚庝細鍐呴儴綾諱細琚紪璇戞垚鐙珛鐨?class鏂囦歡錛屼絾鏄墠闈㈠啝浠ュ閮ㄧ被鐨勭被鍛藉拰$絎﹀彿銆?br />
B銆佸唴閮ㄧ被涓嶈兘鐢ㄦ櫘閫氱殑鏂瑰紡璁塊棶銆傚唴閮ㄧ被鏄閮ㄧ被鐨勪竴涓垚鍛橈紝鍥犳鍐呴儴綾誨彲浠ヨ嚜鐢卞湴璁塊棶澶栭儴綾葷殑鎴愬憳鍙橀噺錛屾棤璁烘槸鍚︽槸private鐨勩?br />
2銆佹垚鍛樺唴閮ㄧ被錛氬艦寮忓涓?br />
class Outer {
class Inner{}
}
緙栬瘧涓婅堪浠g爜浼氫駭鐢熶袱涓枃浠訛細Outer.class鍜孫uter$Inner.class銆?br />
鎴愬憳鍐呴儴綾誨唴涓嶅厑璁告湁浠諱綍闈欐佸0鏄庯紒涓嬮潰浠g爜涓嶈兘閫氳繃緙栬瘧銆?br />
class Inner{
static int a = 10;
}
鑳藉璁塊棶鎴愬憳鍐呴儴綾葷殑鍞竴閫斿緞灝辨槸閫氳繃澶栭儴綾葷殑瀵硅薄錛?br />
A銆佷粠澶栭儴綾葷殑闈為潤鎬佹柟娉曚腑瀹炰緥鍖栧唴閮ㄧ被瀵硅薄銆?br />
class Outer {
private int i = 10;
public void makeInner(){
Inner in = new Inner();
in.seeOuter();
}
class Inner{
public void seeOuter(){
System.out.print(i);
}
}
}
琛ㄩ潰涓婏紝鎴戜滑騫舵病鏈夊垱寤哄閮ㄧ被鐨勫璞″氨瀹炰緥鍖栦簡鍐呴儴綾誨璞★紝鍜屼笂闈㈢殑璇濈煕鐩俱備簨瀹炰笂錛屽鏋滀笉鍒涘緩澶栭儴綾誨璞′篃灝變笉鍙兘璋冪敤makeInner()鏂規硶錛屾墍浠ュ埌澶存潵榪樻槸瑕佸垱寤哄閮ㄧ被瀵硅薄鐨勩?br />
浣犲彲鑳借瘯鍥炬妸makeInner()鏂規硶淇グ涓洪潤鎬佹柟娉曪紝鍗硈tatic public void makeInner()銆傝繖鏍蜂笉鍒涘緩澶栭儴綾誨氨鍙互瀹炰緥鍖栧閮ㄧ被浜嗭紒浣嗘槸鍦ㄤ竴涓潤鎬佹柟娉曢噷鑳借闂潪闈欐佹垚鍛樺拰鏂規硶鍚楋紵鏄劇劧涓嶈兘銆傚畠娌℃湁this寮曠敤銆傛病鑳借煩鍑洪偅鏉¤鍒欙紒浣嗘槸濡傛灉鍦ㄨ繖涓潤鎬佹柟娉曚腑瀹炰緥鍖栦竴涓閮ㄧ被瀵硅薄錛屽啀鐢ㄨ繖涓璞″疄渚嬪寲澶栭儴綾誨憿錛熷畬鍏ㄥ彲浠ワ紒涔熷氨鏄笅涓鏉$殑鍐呭銆?br />
B銆佷粠澶栭儴綾葷殑闈欐佹柟娉曚腑瀹炰緥鍖栧唴閮ㄧ被瀵硅薄銆?br />
class Outer {
private int i = 10;
class Inner{
public void seeOuter(){
System.out.print(i);
}
}
public static void main(String[] args) {
Outer out = new Outer();
Outer.Inner in = out.new Inner();
//Outer.Inner in = new Outer().new Inner();
in.seeOuter();
}
}
琚敞閲婃帀鐨勯偅琛屾槸瀹冧笂闈袱琛岀殑鍚堝茍褰㈠紡錛屼竴鏉$畝媧佺殑璇彞銆?br />
瀵規瘮涓涓嬶細鍦ㄥ閮ㄧ被鐨勯潪闈欐佹柟娉曚腑瀹炰緥鍖栧唴閮ㄧ被瀵硅薄鏄櫘閫氱殑new鏂瑰紡錛欼nner in = new Inner();
鍦ㄥ閮ㄧ被鐨勯潤鎬佹柟娉曚腑瀹炰緥鍖栧唴閮ㄧ被瀵硅薄錛屽繀欏誨厛鍒涘緩澶栭儴綾誨璞★細Outer.Inner in = new Outer().new Inner();
C銆佸唴閮ㄧ被鐨則his寮曠敤銆?br />
鏅氱殑綾誨彲浠ョ敤this寮曠敤褰撳墠鐨勫璞★紝鍐呴儴綾諱篃鏄姝ゃ備絾鏄亣鑻ュ唴閮ㄧ被鎯沖紩鐢ㄥ閮ㄧ被褰撳墠鐨勫璞″憿錛熺敤“澶栭儴綾誨悕”.this錛涚殑褰㈠紡,濡備笅渚嬬殑Outer.this銆?br />
class Outer {
class Inner{
public void seeOuter(){
System.out.println(this);
System.out.println(Outer.this);
}
}
}
D銆佹垚鍛樺唴閮ㄧ被鐨勪慨楗扮銆?br />
瀵逛簬鏅氱殑綾伙紝鍙敤鐨勪慨楗扮鏈塮inal銆乤bstract銆乻trictfp銆乸ublic鍜岄粯璁ょ殑鍖呰闂?br />
浣嗘槸鎴愬憳鍐呴儴綾繪洿鍍忎竴涓垚鍛樺彉閲忓拰鏂規硶銆?br />
鍙敤鐨勪慨楗扮鏈夛細final銆乤bstract銆乸ublic銆乸rivate銆乸rotected銆乻trictfp鍜宻tatic銆?br />
涓鏃︾敤static淇グ鍐呴儴綾伙紝瀹冨氨鍙樻垚闈欐佸唴閮ㄧ被浜嗐?br />
3銆佹柟娉曞唴閮ㄧ被銆?br />
欏懼悕鎬濅箟錛屾妸綾繪斁鍦ㄦ柟娉曞唴銆?br />
class Outer {
public void doSomething(){
class Inner{
public void seeOuter(){
}
}
}
}
A銆佹柟娉曞唴閮ㄧ被鍙兘鍦ㄥ畾涔夎鍐呴儴綾葷殑鏂規硶鍐呭疄渚嬪寲錛屼笉鍙互鍦ㄦ鏂規硶澶栧鍏跺疄渚嬪寲銆?br />
B銆佹柟娉曞唴閮ㄧ被瀵硅薄涓嶈兘浣跨敤璇ュ唴閮ㄧ被鎵鍦ㄦ柟娉曠殑闈瀎inal灞閮ㄥ彉閲忋?br />
鍥犱負鏂規硶鐨勫眬閮ㄥ彉閲忎綅浜庢爤涓婏紝鍙瓨鍦ㄤ簬璇ユ柟娉曠殑鐢熷懡鏈熷唴銆傚綋涓涓柟娉曠粨鏉燂紝鍏舵爤緇撴瀯琚垹闄わ紝灞閮ㄥ彉閲忔垚涓哄巻鍙層備絾鏄鏂規硶緇撴潫涔嬪悗錛屽湪鏂規硶鍐呭垱寤虹殑鍐呴儴綾誨璞″彲鑳戒粛鐒跺瓨鍦ㄤ簬鍫嗕腑錛佷緥濡傦紝濡傛灉瀵瑰畠鐨勫紩鐢ㄨ浼犻掑埌鍏朵粬鏌愪簺浠g爜錛屽茍瀛樺偍鍦ㄤ竴涓垚鍛樺彉閲忓唴銆傛鍥犱負涓嶈兘淇濊瘉灞閮ㄥ彉閲忕殑瀛樻椿鏈熷拰鏂規硶鍐呴儴綾誨璞$殑涓鏍烽暱錛屾墍浠ュ唴閮ㄧ被瀵硅薄涓嶈兘浣跨敤瀹冧滑銆?br />
涓嬮潰鏄畬鏁寸殑渚嬪瓙錛?br />
class Outer {
public void doSomething(){
final int a =10;
class Inner{
public void seeOuter(){
System.out.println(a);
}
}
Inner in = new Inner();
in.seeOuter();
}
public static void main(String[] args) {
Outer out = new Outer();
out.doSomething();
}
}
C銆佹柟娉曞唴閮ㄧ被鐨勪慨楗扮銆?br />
涓庢垚鍛樺唴閮ㄧ被涓嶅悓錛屾柟娉曞唴閮ㄧ被鏇村儚涓涓眬閮ㄥ彉閲忋?br />
鍙互鐢ㄤ簬淇グ鏂規硶鍐呴儴綾葷殑鍙湁final鍜宎bstract銆?br />
D銆侀潤鎬佹柟娉曞唴鐨勬柟娉曞唴閮ㄧ被銆?br />
闈欐佹柟娉曟槸娌℃湁this寮曠敤鐨勶紝鍥犳鍦ㄩ潤鎬佹柟娉曞唴鐨勫唴閮ㄧ被閬彈鍚屾牱鐨勫緟閬囷紝鍗籌細鍙兘璁塊棶澶栭儴綾葷殑闈欐佹垚鍛樸?br />
4銆佸尶鍚嶅唴閮ㄧ被銆?br />
欏懼悕鎬濅箟錛屾病鏈夊悕瀛楃殑鍐呴儴綾匯傝〃闈笂鐪嬭搗鏉ュ畠浠技涔庢湁鍚嶅瓧錛屽疄闄呴偅涓嶆槸瀹冧滑鐨勫悕瀛椼?br />
A銆佺戶鎵垮紡鐨勫尶鍚嶅唴閮ㄧ被銆?br />
class Car {
public void drive(){
System.out.println("Driving a car!");
}
}
class Test{
public static void main(String[] args) {
Car car = new Car(){
public void drive(){
System.out.println("Driving another car!");
}
};
car.drive();
}
}
緇撴灉杈撳嚭浜嗭細Driving another car! Car寮曠敤鍙橀噺涓嶆槸寮曠敤Car瀵硅薄錛岃屾槸Car鍖垮悕瀛愮被鐨勫璞°?br />
寤虹珛鍖垮悕鍐呴儴綾葷殑鍏抽敭鐐規槸閲嶅啓鐖剁被鐨勪竴涓垨澶氫釜鏂規硶銆傚啀寮鴻皟涓涓嬶紝鏄噸鍐欑埗綾葷殑鏂規硶錛岃屼笉鏄垱寤烘柊鐨勬柟娉曘傚洜涓虹敤鐖剁被鐨勫紩鐢ㄤ笉鍙兘璋冪敤鐖剁被鏈韓娌℃湁鐨勬柟娉曪紒鍒涘緩鏂扮殑鏂規硶鏄浣欑殑銆傜畝璦涔嬶紝鍙傝冨鎬併?br />
B銆佹帴鍙e紡鐨勫尶鍚嶅唴閮ㄧ被銆?br />
interface Vehicle {
public void drive();
}
class Test{
public static void main(String[] args) {
Vehicle v = new Vehicle(){
public void drive(){
System.out.println("Driving a car!");
}
};
v.drive();
}
}
涓婇潰鐨勪唬鐮佸緢鎬紝濂藉儚鏄湪瀹炰緥鍖栦竴涓帴鍙c備簨瀹炲茍闈炲姝わ紝鎺ュ彛寮忕殑鍖垮悕鍐呴儴綾繪槸瀹炵幇浜嗕竴涓帴鍙g殑鍖垮悕綾匯傝屼笖鍙兘瀹炵幇涓涓帴鍙c?br />
C銆佸弬鏁板紡鐨勫尶鍚嶅唴閮ㄧ被銆?br />
class Bar{
void doStuff(Foo f){}
}
interface Foo{
void foo();
}
class Test{
static void go(){
Bar b = new Bar();
b.doStuff(new Foo(){
public void foo(){
System.out.println("foofy");
}
});
}
}
5銆侀潤鎬佸祵濂楃被銆?br />
浠庢妧鏈笂璁詫紝闈欐佸祵濂楃被涓嶅睘浜庡唴閮ㄧ被銆傚洜涓哄唴閮ㄧ被涓庡閮ㄧ被鍏變韓涓縐嶇壒孌婂叧緋伙紝鏇寸‘鍒囧湴璇存槸瀵瑰疄渚嬬殑鍏變韓鍏崇郴銆傝岄潤鎬佸祵濂楃被鍒欐病鏈変笂榪板叧緋匯傚畠鍙槸浣嶇疆鍦ㄥ彟涓涓被鐨勫唴閮紝鍥犳涔熻縐頒負欏剁駭宓屽綾匯?br />
闈欐佺殑鍚箟鏄鍐呴儴綾誨彲浠ュ儚鍏朵粬闈欐佹垚鍛樹竴鏍鳳紝娌℃湁澶栭儴綾誨璞℃椂錛屼篃鑳藉璁塊棶瀹冦傞潤鎬佸祵濂楃被涓嶈兘璁塊棶澶栭儴綾葷殑鎴愬憳鍜屾柟娉曘?br />
class Outer{
static class Inner{}
}
class Test {
public static void main(String[] args){
Outer.Inner n = new Outer.Inner();
}
}

]]>