C 為什麼可以在乙個類裡宣告並例項化自身類的物件

2021-09-22 18:34:58 字數 1124 閱讀 1116

例子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...