C建構函式關鍵字可以是public,也可以是private嗎

2022-05-25 02:45:15 字數 5887 閱讀 4709

1樓:

一般情況下使用的是public。如果有特殊要求的情況下,可能使用private修飾。

如果一般常見的單例模式:

public class singlton

public static singlton getinstance()}}

return _instance;}}

這種形式就必須使用private將構造私有化,然後通過getinstance()方法獲得例項。這樣能儲存生成的例項是單一的。不允許使用者使用建構函式重新構造。

不管怎麼說,雖然我們可以對例項進行私有化,但必須有其他的靜態方法來獲得例項。如果不通過靜態方法或靜態屬性來獲得得例項,那麼這麼類就沒有存在的必要了。

所以雖然可以私有化建構函式,但一般要因為對生成有一定的控制,否則最好還是使用public。或使用預設生成的。[不寫建構函式時,編譯器會預設編譯一個]

2樓:匿名使用者

可以,但private的話就不能用new來建立這個類的物件了,當然在這個類內部還是可以new的

3樓:

不可以,只能用public

c++~ 請問在類裡面建構函式必須是public嗎 可以定義到private嗎

4樓:yesyes科

可以定義到private,但定義成private會導致此類不能直接被外部例項化,解決方法如下:

1、首先拷貝建構函式是一種特殊的建構函式,函式名與類名相同,它的一個引數必須是本型別的一個引用變數,無函式型別、返回值。

2、物件通過另一個物件初始化。

3、執行如下圖所示。

4、接著輸入函式的引數為類物件。

5、執行結果,如下圖所示,就完成了。

5樓:娛樂小八卦啊

可以。設計模式裡面有個單件模式,意思是你的類只想有全域性唯一的物件,不想別人再構造一個物件,那麼就需要私有建構函式,這樣別人一旦想構造這個類的物件就會報錯。單例模式就是不允許別人構造物件,所以把建構函式設成private的。

建立完類之後,我們在使用類之前,需要對類進行初始化。定義如何對類進行初始化的成員函式就稱為建構函式。建構函式在建立類型別的物件時被執行。

它的工作是保證每個物件的資料成員具有合適的初始值。

擴充套件資料

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。

建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。預設的建構函式沒有任何引數,但如果需要,建構函式也可以帶有引數。

這樣在建立物件時就會給物件賦初始值。

類的解構函式是類的一種特殊的成員函式,它會在每次刪除所建立的物件時執行。

解構函式的名稱與類的名稱是完全相同的,只是在前面加了個波浪號(~)作為字首,它不會返回任何值,也不能帶有任何引數。解構函式有助於在跳出程式(比如關閉檔案、釋放記憶體等)前釋放資源。

6樓:

可以,但定義成private會導致此類不能直接被外部例項化。如果需要建立物件就需要提供一個static方法來訪問本身的建構函式。簡單例子:

class a

private:

a(){}

};有興趣的話可以參考一下singleton設計模式。

7樓:匿名使用者

建構函式大都是用來建立類變數的,所以都應該是公有(public)的,如果定義為私有(private)的,只能由該類的其他函式呼叫,如果想用該建構函式定義類變數,則只能通過一個公有函式來進行,與其如此,還不如直接定義為公有的更為合理。

8樓:匿名使用者

可以,但是定義到 private,就無法用該類建立物件。

建構函式用public 和private修飾有什麼區別呢

9樓:微夢科技

對屬性或方法的訪問控制,是通過在前面新增關鍵字 public(公有),protected(受保護)或 private(私有)來實現的。被定義為公有的類成員可以在任何地方被訪問。被定義為受保護的類成員則可以被其自身以及其子類和父類訪問。

被定義為私有的類成員則只能被其定義所在的類訪問。

類屬性必須定義為公有,受保護,私有之一。如果用 var 定義,則被視為公有。

<?php

/*** define myclass

*/class myclass

}$obj = new myclass();

echo $obj->public; // 這行能被正常執行

echo $obj->protected; // 這行會產生一個致命錯誤

echo $obj->private; // 這行也會產生一個致命錯誤

$obj->printhello(); // 輸出 public、protected 和 private

/*** define myclass2

*/class myclass2 extends myclass

}$obj2 = new myclass2();

echo $obj2->public; // 這行能被正常執行

echo $obj2->private; // 未定義 private

echo $obj2->protected; // 這行會產生一個致命錯誤

$obj2->printhello(); // 輸出 public、protected2 和 undefined

?>

類中的方法可以被定義為公有,私有或受保護。如果沒有設定這些關鍵字,則該方法預設為公有。

<?php

/*** define myclass

*/class myclass

// 宣告一個公有的方法

public function mypublic()

// 宣告一個受保護的方法

protected function myprotected()

// 宣告一個私有的方法

private function myprivate()

// 此方法為公有

function foo()

}$myclass = new myclass;

$myclass->mypublic(); // 這行能被正常執行

$myclass->myprotected(); // 這行會產生一個致命錯誤

$myclass->myprivate(); // 這行會產生一個致命錯誤

$myclass->foo(); // 公有,受保護,私有都可以執行

/*** define myclass2

*/class myclass2 extends myclass

}$myclass2 = new myclass2;

$myclass2->mypublic(); // 這行能被正常執行

$myclass2->foo2(); // 公有的和受保護的都可執行,但私有的不行

class bar

public function testpublic()

private function testprivate()

}class foo extends bar

private function testprivate()

}$myfoo = new foo();

$myfoo->test(); // bar::testprivate

// foo::testpublic

?>

同一個類的物件即使不是同一個例項也可以互相訪問對方的私有與受保護成員。這是由於在這些物件的內部具體實現的細節都是已知的。

<?php

class test

private function bar()

public function baz(test $other)

}$test = new test('test');

$test->baz(new test('other'));

?>

10樓:匿名使用者

public 和private的區別是一個是共有,一個是私有,可以修飾類,方法,變數,如果修飾了建構函式,就是建構函式一個是公有,其他任何地方都可以例項化該類,如果是private,就是私有建構函式,這個一般很少用,只有單例模式才會這樣寫,因為這樣寫了這個類就不能用普通方法例項化,只有用類裡面的其他公有方法來呼叫建構函式例項化該類。

c#類中的public和private區別

11樓:匿名使用者

public 定義的變數可以再多個類中使用。privae定義的變數只能在當前類中使用。這個使用範圍和類的封裝有關係。

定義的方法也是一個道理。如果別的類中要引用定義的方法,就用public,不引用就用private定義。你在別的類中無法引用到private的方法,只能用到public的 你可以試試

12樓:匿名使用者

在c#中public宣告的類、方法、成員可以被任意訪問,private是私有的,只有定義類的內部才能訪問,private成員可以通過公開屬性來操作。

13樓:來自鼎湖峰國色天香的牡丹

預設是public的

在 class 塊中,成員通過相應的宣告語句被宣告為 private 或 public。被宣告為 private 的將只在 class 塊內是可見的。被宣告為 public 不僅在 class 塊的內部是可見的,對 class 塊之外的**也是可見的。

沒有使用 private 或 public 明確宣告的被預設為 public。 在類的塊內部被宣告為 public 的過程 (sub 或 function)將成為類的方法。public 變數將成為類的屬性,同使用 property get、property let 和 property set 顯式宣告的屬性一樣。

類的預設屬性和方法是在它們的宣告部分用 default 關鍵字指定的。關於如何使用該關鍵字,請參考單獨的宣告語句主題。 摘抄http:

有問題可追問 滿意請採納 3q

c#裡建構函式怎麼寫,,

14樓:石高飛

public class myclass

public myclass(int age)//這是一個帶引數的建構函式

private int age;

}建構函式的作用:簡單地說就是初始化一類的物件例項以及其各自段的值.

15樓:累得像豬一樣

c#建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。不帶引數的建構函式稱為「預設建構函式」。

無論何時,只要使用 new 運算子例項化物件,並且不為 new 提供任何引數,就會呼叫預設建構函式。除非類是 static 的,否則 c# 編譯器將為無建構函式的類提供一個公共的預設建構函式,以便該類可以例項化。

建構函式必須是在類裡的一級宣告,並且命名為類名,

形式為:修飾符 類名(引數型別1,引數名1,。。。)

例如class a

//帶引數的建構函式

public a(string a)

}一般函式的宣告則不受這些約束

只要定義在名稱空間內,命名形式為:修飾符 返回值型別 函式名(引數型別1,引數名1,。。。)

例如:private static void main(string args)

宣告瞭一個私有的靜態主函式,無返回值,引數為args,string型別。

請輸入關鍵字,請輸入關鍵字

一 簡便運算。95.2 5.61 4.39 95.2 5.61 4.39 95.2 10 85.2 1.8 4.26 0.74 8.2 1.8 8.2 1.26 0.74 10 2 12 99 21.8 21.8 99 1 21.8 100 21.8 2180 3.6 0.1 2.7 1.5 3.6...

關於C 中的New關鍵字的語法

不傳遞引數時,兩種寫法是一樣的.但如果要傳遞引數,或者建構函式必須要傳遞引數時,必須寫成new a x,y 的形式 a a new a 表示申請一個sizeof a的空間 a a new a x 表示申請x個大小為sizeof a的空間你沒寫編譯器預設為1 謝謝採納 這裡其實是呼叫一個建構函式 如果...

如何選擇關鍵字

1全部選擇一句話中最關鍵的字 類似公文後面的主題詞 去掉副詞 介詞 連詞等 譬如,有一個客戶想在網上買幾種鮮花,他將會在搜尋框中輸入關鍵字 鮮花 即可尋找相關資訊 簡單的說,關鍵字就是使用者在使用搜尋引擎時輸入的 能夠最大程度概括使用者所要查詢的資訊內容的字或者詞,是資訊的概括化和集中化 還是用實際...