讓我迷惑的結果 悲懼的JAVA基礎啊

2021-08-31 08:57:46 字數 541 閱讀 9582

為什麼子類物件呼叫父類物件的方法,改變的居然是被子類隱藏掉的變數?
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 ...