string是字串常量,檢視原始碼我們很容易知道string是被final修飾,一旦申明不可以變改變,那就有疑惑了,那既然string類不可以被修改,那平時我們申明變數
string s="abc";
s="efg";
system.out.println(s);
很容易可以得出efg;
而string是被final修飾,應該不能被改變?
其實這裡應該明白一件事,string不是八大基本資料型別,它是乙個引用型別,
它申明變數
string s1="abc";
其是類似於
string s2=new string("abc");
這裡是s1其實是乙個位址引用,申明s1="abc"後,它會去方法區的字串常量池建立乙個「abc」。然後在棧中生成乙個指向「abc」的位址。
而如下修改變數的方式
string s="abc";
s="efg";
改變的只是將s指向下乙個物件「efg」;而原來的物件「abc」並沒有被改變。 static修飾的方法不能被重寫可以被繼承
今天我們談談為什麼抽象類中不能有靜態的抽象方法以及static修飾的方法不能被重寫可以被繼承 1 static修飾的方法不能被重寫可以被繼承 我們知道static修飾的方法為靜態方法,可以直接使用類名.方法名進行呼叫,即該方法不屬於某個物件屬於該類。我們根據下面的例子在看看static修飾的方法是否...
不能被繼承的類
不能被繼承的類,就是子類在呼叫父類的建構函式的時候失敗就沒法被整合了,所以可以把析構函式定義為private,因為在呼叫建構函式的時候,會先檢查析構函式,如果析構是private的,那麼建構函式也沒法被呼叫。這個問題和另一篇文章類似我們通過設定共有的static函式來構造和析構。class a a ...
不能被繼承的類
題目 用c 設計乙個不能被繼承的類。分析 乙個類被繼承後,在生成派生類物件時,派生類會主動呼叫父類的建構函式,所以如果父類的建構函式被設定成私有時,派生類的物件就無法構建。一 直接將建構函式設為私有函式 class sealedclass static void deleteinstance sea...