① 子類如何調用父類private修飾的屬性或方法
在JAVA中,子類是無法繼承父類的private修飾的屬性和方法的,也就是說子類繼承了父類,卻沒有繼承其用private修飾的屬性和方法,就無法調用了。這有利於在開發過程中保護父類的某種屬性和方法不被覆蓋
需要注意的是:使用了private修飾的屬性和方法,默認使用final修飾,也就是說使用了private修飾的屬性,是一個常量,第一次載入初始化後就不能夠更改!
希望滿意,謝謝!
② 鍚勪綅甯鎴戝啓涓涓狫AVA final鐨勪緥瀛愬惂 騫惰В閲婅存槑final寮曠敤涓嶅彲浠ユ敼鍙橈紝浣嗙姸鎬佸彲浠ユ敼鍙
涓銆乫inal
銆鏍規嵁紼嬪簭涓婁笅鏂囩幆澧冿紝Java鍏抽敭瀛梖inal鏈夆滆繖鏄鏃犳硶鏀瑰彉鐨勨濇垨鑰呪滅粓鎬佺殑鈥濆惈涔夛紝瀹冨彲浠ヤ慨楗伴潪鎶借薄綾匯侀潪鎶借薄綾繪垚鍛樻柟娉曞拰鍙橀噺銆備綘鍙鑳藉嚭浜庝袱縐嶇悊瑙h岄渶瑕侀樆姝㈡敼鍙橈細璁捐℃垨鏁堢巼銆
final綾諱笉鑳借緇ф壙錛屾病鏈夊瓙綾伙紝final綾諱腑鐨勬柟娉曢粯璁ゆ槸final鐨勩
final鏂規硶涓嶈兘琚瀛愮被鐨勬柟娉曡嗙洊錛屼絾鍙浠ヨ緇ф壙銆
final鎴愬憳鍙橀噺琛ㄧず甯擱噺錛屽彧鑳借璧嬪間竴嬈★紝璧嬪煎悗鍊間笉鍐嶆敼鍙樸
final涓嶈兘鐢ㄤ簬淇楗版瀯閫犳柟娉曘
娉ㄦ剰錛氱埗綾葷殑private鎴愬憳鏂規硶鏄涓嶈兘琚瀛愮被鏂規硶瑕嗙洊鐨勶紝鍥犳private綾誨瀷鐨勬柟閿嬭偄娉曢粯璁ゆ槸final綾誨瀷鐨勩
1銆乫inal綾
銆final綾諱笉鑳借緇ф壙錛屽洜姝final綾葷殑鎴愬憳鏂規硶娌℃湁鏈轟細琚瑕嗙洊錛岄粯璁ら兘鏄痜inal鐨勩傚湪璁捐$被鏃跺欙紝濡傛灉榪欎釜綾諱笉闇瑕佹湁瀛愮被錛岀被鐨勫疄鐜扮粏鑺備笉鍏佽告敼鍙橈紝騫朵笖紜淇¤繖涓綾諱笉浼氳澆琚鎵╁睍錛岄偅涔堝氨璁捐′負final綾匯
2銆乫inal鏂規硶
濡傛灉涓涓綾諱笉鍏佽稿叾瀛愮被瑕嗙洊鏌愪釜鏂規硶錛屽垯鍙浠ユ妸榪欎釜鏂規硶澹版槑涓篺inal鏂規硶銆
浣跨敤final鏂規硶鐨勫師鍥犳湁浜岋細
絎涓銆佹妸鏂規硶閿佸畾錛岄槻姝浠諱綍緇ф壙綾諱慨鏀瑰畠鐨勬剰涔夊拰瀹炵幇銆
絎浜屻侀珮鏁堛傜紪璇戝櫒鍦ㄩ亣鍒拌皟鐢╢inal鏂規硶鏃跺欎細杞鍏ュ唴宓屾満鍒訛紝澶уぇ鎻愰珮鎵ц屾晥鐜囥
渚嬪傦細
public class Test1 {
public static void main(String[] args) {
// TODO 鑷鍔ㄧ敓鎴愭柟娉曞瓨鏍
}
public void f1() {
System.out.println("f1");
}
//鏃犳硶琚瀛愮被瑕嗙洊鐨勬柟娉
public final void f2() {
System.out.println("f2");
}
public void f3() {
System.out.println("f3");
}
private void f4() {
System.out.println("f4");
}
}
public class Test2 extends Test1 {
public void f1(){
System.out.println("Test1鐖剁被鏂規硶f1琚瑕嗙洊!");
}
public static void main(String[] args) {
Test2 t=new Test2();
t.f1();
t.f2(); //璋冪敤浠庣埗綾葷戶鎵胯繃鏉ョ殑final鏂規硶
t.f3(); //璋冪敤浠庣埗綾葷戶鎵胯繃鏉ョ殑鏂規硶
//t.f4(); //璋冪敤澶辮觸錛屾棤娉曚粠鐖剁被緇ф壙鑾峰緱
}
}
3銆乫inal鍙橀噺錛堝父閲忥級
銆鐢╢inal淇楗扮殑鎴愬憳鍙橀噺琛ㄧず甯擱噺錛屽間竴鏃︾粰瀹氬氨鏃犳硶鏀瑰彉錛
銆final淇楗扮殑鍙橀噺鏈変笁縐嶏細闈欐佸彉閲忋佸疄渚嬪彉閲忓拰灞閮ㄥ彉閲忥紝鍒嗗埆琛ㄧず涓夌嶇被鍨嬬殑甯擱噺銆
銆浠庝笅闈㈢殑渚嬪瓙涓鍙浠ョ湅鍑猴紝涓鏃︾粰final鍙橀噺鍒濆煎悗錛屽煎氨涓嶈兘鍐嶆敼鍙樹簡銆
銆鍙﹀栵紝final鍙橀噺瀹氫箟鐨勬椂鍊欙紝鍙浠ュ厛澹版槑錛岃屼笉緇欏垵鍊礆紝榪欎腑鍙橀噺涔熺О涓篺inal絀虹櫧錛屾棤璁轟粈涔堟儏鍐碉紝緙栬瘧鍣ㄩ兘紜淇濈┖鐧絝inal鍦ㄤ嬌鐢ㄤ箣鍓嶅繀孌靛惖欏昏鍒濆嬪寲銆備絾鏄錛宖inal絀虹櫧鍦╢inal鍏抽敭瀛梖inal鐨勪嬌閾剁噧涓栫敤涓婃彁渚涗簡鏇村ぇ鐨勭伒媧繪э紝涓烘わ紝涓涓綾諱腑鐨刦inal鏁版嵁鎴愬憳灝卞彲浠ュ疄鐜頒緷瀵硅薄鑰屾湁鎵涓嶅悓錛屽嵈鏈変繚鎸佸叾鎮掑畾涓嶅彉鐨勭壒寰併
package org.leimin;
public class Test3 {
private final String S="final瀹炰緥鍙橀噺S";
private final int A=100;
public final int B=90;
public static final int C=80;
private static final int D=70;
public final int E; //final絀虹櫧,蹇呴』鍦ㄥ垵濮嬪寲瀵硅薄鐨勬椂鍊欒祴鍒濆
public Test3(int x){
E=x;
}
/**
* @param args
*/
public static void main(String[] args) {
Test3 t=new Test3(2);
//t.A=101; //鍑洪敊,final鍙橀噺鐨勫間竴鏃︾粰瀹氬氨鏃犳硶鏀瑰彉
//t.B=91; //鍑洪敊,final鍙橀噺鐨勫間竴鏃︾粰瀹氬氨鏃犳硶鏀瑰彉
//t.C=81; //鍑洪敊,final鍙橀噺鐨勫間竴鏃︾粰瀹氬氨鏃犳硶鏀瑰彉
//t.D=71; //鍑洪敊,final鍙橀噺鐨勫間竴鏃︾粰瀹氬氨鏃犳硶鏀瑰彉
System.out.println(t.A);
System.out.println(t.B);
System.out.println(t.C); //涓嶆帹鑽愮敤瀵硅薄鏂瑰紡璁塊棶闈欐佸瓧孌
System.out.println(t.D); //涓嶆帹鑽愮敤瀵硅薄鏂瑰紡璁塊棶闈欐佸瓧孌
System.out.println(Test3.C);
System.out.println(Test3.D);
//System.out.println(Test3.E); //鍑洪敊,鍥犱負E涓篺inal絀虹櫧,渚濇嵁涓嶅悓瀵硅薄鍊兼湁鎵涓嶅悓.
System.out.println(t.E);
Test3 t1=new Test3(3);
System.out.println(t1.E); //final絀虹櫧鍙橀噺E渚濇嵁瀵硅薄鐨勪笉鍚岃屼笉鍚
}
private void test(){
System.out.println(new Test3(1).A);
System.out.println(Test3.C);
System.out.println(Test3.D);
}
public void test2(){
final int a; //final絀虹櫧,鍦ㄩ渶瑕佺殑鏃跺欐墠璧嬪
final int b=4; //灞閮ㄥ父閲--final鐢ㄤ簬灞閮ㄥ彉閲忕殑鎯呭艦
final int c; //final絀虹櫧,涓鐩存病鏈夌粰璧嬪.
a=3;
//a=4; 鍑洪敊,宸茬粡緇欒祴榪囧間簡.
//b=2; 鍑洪敊,宸茬粡緇欒祴榪囧間簡.
}
}
4銆乫inal鍙傛暟
褰撳嚱鏁板弬鏁頒負final綾誨瀷鏃訛紝浣犲彲浠ヨ誨彇浣跨敤璇ュ弬鏁幫紝浣嗘槸鏃犳硶鏀瑰彉璇ュ弬鏁扮殑鍊箋
public class Test4 {
public static void main(String[] args) {
new Test4().f1(2);
}
public void f1(final int i){
//i++; //i鏄痜inal綾誨瀷鐨,鍊間笉鍏佽告敼鍙樼殑.
System.out.print(i);
}
}
③ final class鎬庝箞璋冪敤錛
鍦ㄧ壒瀹氱幆澧冧笅閫氳繃婧愪唬鐮佽皟鐢ㄣ