Java类内部方法调用实例详解:从基础到应用
銆屽搸锛孞ava鏂规硶璋冪敤杩樿兘鍒嗗唴澶栵紵杩欎笉鏄劚瑁ゅ瓙鏀惧眮鍢涳紒銆嶁€斺€旇繖鏄垜鍒濆Java鏃剁殑鐪熷疄鎯虫硶銆傜洿鍒版帴鎵嬬涓€涓」鐩紝鐪嬬潃鍚屼簨鍐欑殑3000琛?瓒呯骇鏂规硶"锛屾垜鎵嶆槑鐧芥柟娉曡皟鐢ㄧ殑闂ㄩ亾鏈夊閲嶈銆備粖澶╁挶浠氨鐢ㄦ渶鎺ュ湴姘旂殑鏂瑰紡锛屾妸杩欎簨鍎挎幇寮€浜嗘弶纰庝簡璁叉竻妤氾紒
鈻嶁枎鈻忓厛鏉ョ偣寮€鑳冭彍锛堭煠旓級
鍒氭帴瑙ava閭d細鍎匡紝鎴戞€讳互涓轰竴涓柟娉曞氨璇ュ寘鍔炴墍鏈変簨鎯呫€傜洿鍒版煇澶╃湅鍒板悓浜嬪啓鐨勮繖娈典唬鐮侊細
java澶嶅埗public class Calculator { public int addAndMultiply(int a, int b) { int sum = a + b; return sum * sum; // 杩欒浠g爜璁╂垜绐佺劧寮€绐?/span> } }
绐佺劧鎰忚瘑鍒帮細鈥?strong>鈥嬭繖涔樻硶杩愮畻瀹屽叏鍙互鎷嗘垚鐙珛鏂规硶鍟婏紒鈥?/strong>鈥?浜庢槸鏀规垚浜嗭細
java澶嶅埗public int add(int x, int y) { return x + y; } public int square(int num) { return num * num; }
鐪嬶紝浠g爜椤挎椂娓呯埥澶氫簡锛佽繖灏辨槸鍐呴儴鏂规硶璋冪敤鐨勭簿楂撯€斺€旇姣忎釜鏂规硶涓撴敞鍋氬ソ涓€浠朵簨銆?/p>
馃洜锔忋€愬疄鎿嶆墜鍐屻€戜笁绉嶅繀浼氳皟鐢ㄥЭ鍔?/h3>
濮垮娍1锛氱洿鎺ュ懠鍙皬浼欎即
java澶嶅埗public class OrderProcessor {
// 鏍¢獙搴撳瓨
private boolean checkStock(String itemId) {
//...鏁版嵁搴撴煡璇㈤€昏緫
}
// 鐢熸垚璁㈠崟锛堜富鏂规硶锛?/span>
public void createOrder(String itemId) {
if(checkStock(itemId)) { // 杩欓噷璋冪敤鍐呴儴鏂规硶
// 鎵ц涓嬪崟鎿嶄綔
}
}
}
public class OrderProcessor {
// 鏍¢獙搴撳瓨
private boolean checkStock(String itemId) {
//...鏁版嵁搴撴煡璇㈤€昏緫
}
// 鐢熸垚璁㈠崟锛堜富鏂规硶锛?/span>
public void createOrder(String itemId) {
if(checkStock(itemId)) { // 杩欓噷璋冪敤鍐呴儴鏂规硶
// 鎵ц涓嬪崟鎿嶄綔
}
}
}
鈥?strong>鈥嬮噸鐐规潵浜嗏€?/strong>鈥嬶細checkStock
鏂规硶涓轰粈涔堣鐢╬rivate锛熶綘鎯虫兂鍟婏紝灏卞儚浣犱笉浼氶殢渚胯浜虹炕浣犲鍐扮瀵瑰惂锛熷皝瑁呮€у氨鏄繖涓悊鍎匡紒
濮垮娍2锛氶潤鎬佹柟娉曟墜鐗垫墜
java澶嶅埗class MathUtils { // 闈欐€佹柟娉曡绠楀渾闈㈢Н public static double circleArea(double r) { return PI * square(r); // 璋冪敤鍙︿竴涓潤鎬佹柟娉?/span> } private static double square(double x) { return x * x; } }
鈿狅笍 娉ㄦ剰鐪嬭繖閲岋紒闈欐€佹柟娉曞彧鑳借皟鐢ㄩ潤鎬佸皬浼欎即锛屽氨鍍忓井淇$兢閲岀殑鏂囦欢涓嶈兘鐩存帴瀛樼數鑴戞闈竴涓亾鐞嗐€?/p>
濮垮娍3锛氶€掑綊璋冪敤鐜╁濞?/h4>
java澶嶅埗public class Factorial {
public int calculate(int n) {
if(n == 1) return 1;
return n * calculate(n-1); // 鎴戣皟鎴戣嚜宸憋紒
}
}
public class Factorial {
public int calculate(int n) {
if(n == 1) return 1;
return n * calculate(n-1); // 鎴戣皟鎴戣嚜宸憋紒
}
}
鈥?strong>鈥嬭娉暀璁€?/strong>鈥嬶細鏈夋鎴戝繕璁板啓缁堟鏉′欢锛岀粨鏋滅▼搴忓儚鑴辩及閲庨┈涓€鏍疯窇椋炰簡銆傛墍浠ヨ閫掑綊铏藉ソ锛屽彲鍒椽鏉摝锝?/p>
馃挕銆愰伩鍧戞寚鍗椼€戞柊鎵嬩笁澶уぉ鍧?/h3>
- 鈥?strong>鈥嬬┖鎸囬拡鍒哄鈥?/strong>鈥?鈿狅笍
java澶嶅埗public class UserService {
private Logger logger;
public void login() {
logger.info("寮€濮嬬櫥褰?); // 杩欓噷鍙兘寮曞彂NPE锛?/span>
// 搴旇鍏堝垽鏂璴ogger鏄惁鍒濆鍖?/span>
}
}
- 鈥?strong>鈥嬫寰幆榛戞礊鈥?/strong>鈥?馃攧
java澶嶅埗public void methodA() {
methodB();
}
public void methodB() {
methodA(); // 浜掔浉璋冪敤灏辨槸浣滄锛?/span>
}
- 鈥?strong>鈥嬫潈闄愯秺鐣屼簨鏁呪€?/strong>鈥?馃毀
java澶嶅埗private void secretOperation() {...}
public void publicMethod() {
secretOperation(); // 杩欎釜娌¢棶棰?/span>
}
// 浣嗗閮ㄧ被瑕佹槸鑳界洿鎺ヨ皟鐢╯ecretOperation灏卞畬鐘婂瓙浜?/span>
馃殌銆愭€ц兘鐜勫銆戠嫭瀹舵祴璇曟暟鎹?/h3>
public class UserService {
private Logger logger;
public void login() {
logger.info("寮€濮嬬櫥褰?); // 杩欓噷鍙兘寮曞彂NPE锛?/span>
// 搴旇鍏堝垽鏂璴ogger鏄惁鍒濆鍖?/span>
}
}
public void methodA() {
methodB();
}
public void methodB() {
methodA(); // 浜掔浉璋冪敤灏辨槸浣滄锛?/span>
}
private void secretOperation() {...}
public void publicMethod() {
secretOperation(); // 杩欎釜娌¢棶棰?/span>
}
// 浣嗗閮ㄧ被瑕佹槸鑳界洿鎺ヨ皟鐢╯ecretOperation灏卞畬鐘婂瓙浜?/span>
鍘诲勾鎴戠敤JMeter鍋氳繃鍘嬪姏娴嬭瘯锛氭妸200琛屼唬鐮佹媶鍒嗘垚10涓唴閮ㄦ柟娉曪紝鎬ц兘鍙嶈€屾彁鍗囦簡18%锛佷负鍟ワ紵鈥?strong>鈥婮VM鐨勫嵆鏃剁紪璇戝櫒锛圝IT锛夋洿鍠滄鐭皬绮炬倣鐨勬柟娉曗€?/strong>鈥嬶紝灏卞儚蹇€掑皬鍝ユ洿鎰挎剰閫佸皬鍖呰9涓€鏍枫€?/p>
馃尠銆愮湡瀹炴渚嬨€戠數鍟嗙郴缁熶紭鍖栬
鎺ユ墜杩囦竴涓棩鍧?0涓囪鍗曠殑绯荤粺锛屽師浠g爜闀胯繖鏍凤細
java澶嶅埗public void processOrder(Order order) { // 楠岃瘉鍦板潃锛?0琛岋級 // 璁$畻杩愯垂锛?0琛岋級 // 鎵e噺搴撳瓨锛?20琛岋級 // ...鍏?00澶氳 }
鏀归€犳垚鍐呴儴鏂规硶璋冪敤鍚庯細
java澶嶅埗public void processOrder(Order order) { validateAddress(order); calculateShipping(order); deductInventory(order); // 姣忎釜鏂规硶30-50琛?/span> }
鈥?strong>鈥嬫晥鏋滅珛绔胯褰扁€?/strong>鈥嬶細鎺掓煡鐗╂祦璁$畻bug鐨勬椂闂翠粠2灏忔椂缂╃煭鍒?0鍒嗛挓锛岃繖灏辨槸鏂规硶鎷嗗垎鐨勯瓟鍔涳紒
鈻嶁枎鈻忔渶鍚庤鐐规帍蹇冪獫鐨勮瘽锛堭煠級
鏈夋闈㈣瘯鎴戦棶鍊欓€変汉锛?浣犺寰楁柟娉曡皟鐢ㄦ槸瓒婂瓒婂ソ鍚楋紵" 缁撴灉浠栧洖鎴戯細"閭e繀椤诲晩锛岃兘鎷嗗氨鎷嗭紒" 鎴戝綋鍦哄氨绗戜簡鈥斺€旀柟娉曡皟鐢ㄥ氨鍍忓悆鑷姪椁愶紝涓冨垎楗卞垰鍒氬ソ銆傗€?strong>鈥嬫牳蹇冨師鍒欏氨鍏釜瀛楋細楂樺唴鑱氾紝浣庤€﹀悎锛屽埆鏁欐潯锛佲€?/strong>鈥?/p>
涓嬫鐪嬪埌鍚屼簨鍐欑殑"宸ㄦ棤闇告柟娉?锛屽埆鎬ョ潃鍚愭Ы銆傚厛鎯虫兂锛氳繖浜涗唬鐮佹槸涓嶆槸鍍忎箰楂樼Н鏈ㄤ竴鏍凤紝铏界劧鍗曚釜鍧楀ご澶э紝浣嗙粍鍚堣捣鏉ョ壒鍒『鎵嬶紵姣曠珶锛屸€?strong>鈥嬩唬鐮佹槸鍐欑粰浜虹湅鐨勶紝鍏舵鎵嶆槸缁欐満鍣ㄦ墽琛岀殑鈥?/strong>鈥嬨€?/p>