為什麼子類物件呼叫父類物件的方法,改變的居然是被子類隱藏掉的變數?
public class inherittest }
class a
public int compute() }
class b extends a
public void setvalue(int i,int j)
public int compute()
}
a的位元組碼:
// class version 49.0 (49)
// access flags 32
class org/zengge/test/a
可以看出setvalue操作的是a物件的屬性
而new b()的時候同時會產生乙個a的物件,這時b相當於有4個屬性,b.x,b.y,a.x,a.y只不過a.x與a.y被隱藏掉了,而呼叫setvalue時,髮變的實際上是a物件的x與y,所以最後列印出來的還是12,而不是2,b的屬性值沒有發生任何變化
讓人迷惑的命名
讓人迷惑的命名 jdk1.5中的string的兩個方法replace和replaceall。從名字你絕對猜不到replaceall的真正用途。string replace char oldchar,char newchar 返回乙個新的字串,它是通過用newchar替換此字串中出現的所有oldcha...
requirejs 讓人迷惑的路徑解析
接觸過requirejs的童鞋可能都知道,無論是通過define來定義模組,還是通過require來載入模組,模組依賴宣告都是很重要的一步。而其中涉及到的模組路徑解析,對於新手來說,有的時候會讓人覺得很困惑。假設我們的目錄結構如下 demo.html js main.js js lib.js js ...
requirejs 讓人迷惑的路徑解析
接觸過requirejs的童鞋可能都知道,無論是通過define來定義模組,還是通過require來載入模組,模組依賴宣告都是很重要的一步。而其中涉及到的模組路徑解析,對於新手來說,有的時候會讓人覺得很困惑。假設我們的目錄結構如下 demo.html js main.js js lib.js js ...