2 回答

TA貢獻(xiàn)217條經(jīng)驗(yàn) 獲得超353個(gè)贊
不用java的這些面象對象的特性,采用過程式開發(fā)一個(gè)項(xiàng)目,完全可以。問題是。。。非常麻煩。
所學(xué)的這些東西都是工具,等到你真的工作的時(shí)候就會慢慢體會到,如果不用這些特性,越龐大的項(xiàng)目越難維護(hù)。
============================
建議還是找一些小的項(xiàng)目(比如別人寫的一個(gè)小游戲demo)然后觀察代碼中哪里用了封裝、哪里用了多態(tài)、哪里用了接口。如果不用的話自己去寫是什么樣子的,能實(shí)現(xiàn)嗎?能的話比這個(gè)麻煩還是比這個(gè)簡單?多動腦思考多敲代碼才會慢慢體會得到。
============================
既然你已經(jīng)初步掌握了這幾個(gè)特性,那么我出幾個(gè)題考考你吧。
問題:print是一個(gè)方法,那么如下,同一個(gè)方法,參數(shù)不同(一個(gè)字符串,一個(gè)整型)都可以打印內(nèi)容,這是為什么?用了java的什么特性?
System.out.print("ABC");
System.out.print(123);
===================================
以上用了java的靜態(tài)多態(tài)性(方法的重載為靜態(tài)多態(tài),方法的重寫為動態(tài)多態(tài)[即,運(yùn)行時(shí)才能看知道執(zhí)行的結(jié)果]多發(fā)生于子類與父類之間)。
換句話說,這就是兩個(gè)同名的不同的方法。(如果打開java源碼可以看到)。好處很顯然,你只要關(guān)心要打印什么,具體打印是什么類型不用關(guān)心。
我想,如果換做是你要實(shí)現(xiàn)這個(gè)功能,可能會命名完全不同的兩個(gè)方法吧。比如:
System.out.printString("ABC");
System.out.printInt(123);
System.out.printBoolean(false);
……
這樣不用java多態(tài)性的重載方式解決問題,每一個(gè)都要去記打印類型對應(yīng)的方法名,多麻煩。
=======================================
PS:加油哈,good luck!

TA貢獻(xiàn)75條經(jīng)驗(yàn) 獲得超32個(gè)贊
這些將來在你實(shí)際開發(fā)項(xiàng)目中很常用的,現(xiàn)在不必糾結(jié)著個(gè)問題。自己掌握怎么用就行。
添加回答
舉報(bào)