1. 程式人生 > >對java語言"完全"面向物件的理解

對java語言"完全"面向物件的理解

java語言是面向物件的語言,也可以表示為java是面向類和介面程式設計的語言,就我而言,我個人認為
java裡面static方法和引用不是面向物件的,java裡面的引用容易理解就相當於c語言的指標,java裡面的物件就是指標,只是換了個名字而已,只是操作起來效率沒有c語言中指標高.
而對於static方法,我們在使用static方法時,由於不存在this,所以java不是通過向物件傳送訊息
的方式來完成,這樣理解的話,我認為java裡面的static方法,並不是完全面向物件的.
Java是非常“面向物件”的語言(尤其和現在同樣非常火的C++相比,Java是單根繼承結構),static
方法,卻不是“面向物件”的。因為它們具有全域性函式的語義,使用static方法時,由於不存在this,
所以不是通過“向物件傳送訊息”的方式來完成的。所以我認為,因為存在static方法,Java並不是完全的“面向物件”語言。如果一段程式碼中出現了太多的static方法,那就該重新考慮自己的設計.

Java是單繼承,但它有介面(interface),解決C++裡面多重繼承帶來的問題.main方法必須是static,
因為只有使用main方法是入口,也就是說,jvm要執行,就必須從 main方法開始,static可以不用建立例項就可以呼叫該方法。那麼,JVM就可以在沒有初始化這個類的任何例項前就呼叫main.所以這個不是OO設計的問題,因為一個程式肯定要有入口.static一般是向其他類提供工具,所以經常把許多static函式封裝到一個類裡面,比如說常用的System.out.println....等都是封裝好的靜態方法,用來提供一些常用功能,避免自己的重複實現.

綜上所述,對java裡會出現一些非面向物件的東西和一些非他所宣傳的東西,例如指標,實際上是
存在的,只是換了個名字而已,叫引用,並且操作不像C那麼自由了,而且效率也沒有C高,之前從`部落格上面看到
然有部分人對這個的理解,然後自己拓展開來談一下自己的理解.