例子1:自身類的物件是靜態字段,該欄位屬於類,而不屬於該類的每個物件。
using system;
namespace newselfclassobject
+n:+o:", atom.c.radius, atom.n.radius, atom.o.radius);
// c# 6 引入了字串字首$
console.writeline($"c:+n:+o:");
console.readline();}}
public class atom
/// /// 有了自定義的建構函式,就不會自動生成預設無參建構函式,在別處使用atom atom = new atom();就會報錯
/// 這是私有的建構函式,說明只能在atom類裡例項化atom的物件,也就是在靜態建構函式中new出物件,
/// 那麼,其他地方要用atom物件的話,就直接讀上面那幾個atom物件就ok,別去每用一次atom物件就new一次
///
private atom(float radius)
/// /// 只能用靜態建構函式初始化靜態變數,靜態建構函式屬於類,而不屬於具體的物件,
/// 也就是說這個建構函式只會被執行一次。也就是在建立類的第乙個例項或引用類的任何靜態成員之前
///
static atom()
}}
輸出:
c:0.1+n:0.2+o:0.3
c:0.1+n:0.2+o:0.3
上述這種用法是ok的,經常用到的也不過是上述這種用法,這樣用的目的是減少同乙個型別new物件的次數。
例子2:自身類的物件是普通字段,該字段不屬於類,而屬於該類的每個物件。
// 鍊錶節點類
private sealed class node
public node(char data, node next)
public override string tostring()
}private static void samedatalinkedlist()
//在main中呼叫samedatalinkedlist(),輸出:abc
為什麼乙個物件可以用父類宣告,卻用子類例項化
這個例項是子類的,但是因為你宣告時是用父類宣告的,所以你用正常的辦法訪問不到子類自己的成員,只能訪問到從父類繼承來的成員。在子類中用override重寫父類中用virtual申明的虛方法時,例項化父類呼叫該方法,執行時呼叫的是子類中重寫的方法 如果子類中用new覆蓋父類中用virtual申明的虛方法...
為什麼乙個類的物件可以做成員變數呢 ?
對於物件導向的語言來說,乙個類中能夠使用的資料型別包括任何在本語言中合法的型別。乙個物件它屬於引用型別資料例項,當然就可以出現在乙個類中作為這個類的成員使用了,可能這個物件不是這個類的特有 特徵,但是它們存在一些必然或者實際行為動作中產生的間接聯絡,乙個物件成為乙個類的成員也就順理成章,這樣符合實際...
宣告介面IPoint描述乙個點的 座標並實現該介面
宣告介面ipoint描述乙個點的 座標並實現該介面 123 4567 891011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 4647 48using system usi...