① 子类如何调用父类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镐庝箞璋幂敤锛
鍦ㄧ壒瀹氱幆澧冧笅阃氲繃婧愪唬镰佽皟鐢ㄣ