A. 当存在自定义的构造函数时,默认构造函数会不会存在
程序员自定义了一个构造函数时,系统不会再提供一个默认构造函数。但是如果一个构造函数都没有写时,系统会有一个空的默认的构造函数。由于默认构造函数有两种:有参数但是都有默认值,没有参数的。如果是有参数的默认构造函数,就不能有其他构造函数,否则传参数时会出错(传递参数时,不知道传递给哪一个构造函数),没有参数的则可以和其他构造函数同时存在。
B. 常见的构造函数类型
构造函数类型分为四种、无参数构造函数、有参数构造函数、拷贝构造函数、默认构造函数。
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
C. C璇瑷閲岄溃鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟镄勮繍鐢ㄥ姙娉
銆銆鎽 瑕侊细鏋勯犲嚱鏁颁笌鏋愭瀯鍑芥暟鏄涓涓绫讳腑鐪嬩技杈冧负绠鍗旷殑涓ょ被鍑芥暟锛屼絾鍦ㄥ疄闄呰繍鐢ㄨ繃绋嬩腑镐讳细鍑虹幇涓浜涙剰𨱍充笉鍒扮殑杩愯岄敊璇銆傛湰鏂囧皢杈幂郴缁熺殑浠嬬粛鏋勯犲嚱鏁颁笌鏋愭瀯鍑芥暟镄勫师鐞嗗强鍦–#涓镄勮繍鐢锛屼互鍙婂湪浣跨敤杩囩▼涓闇瑕佹敞镒忕殑鑻ュ共浜嬮”銆
銆銆鍏抽敭瀛楋细鏋勯犲嚱鏁帮绂鏋愭瀯鍑芥暟锛涘瀮鍦惧洖鏀跺櫒锛涢潪镓樼¤祫婧愶绂镓樼¤祫婧
銆銆 涓锛庢瀯阃犲嚱鏁颁笌鏋愭瀯鍑芥暟镄勫师鐞
銆銆浣滀负姣擟镟村厛杩涚殑璇瑷锛孋#鎻愪緵浜嗘洿濂界殑链哄埗𨱒ュ炲己绋嫔簭镄勫畨鍏ㄦс侰#缂栬疟鍣ㄥ叿链変弗镙肩殑绫诲瀷瀹夊叏妫镆ュ姛鑳斤纴瀹冨嚑涔庤兘镓惧嚭绋嫔簭涓镓链夌殑璇娉曢梾棰桡纴杩欑殑纭甯浜嗙▼搴忓憳镄勫ぇ蹇欍备絾鏄绋嫔簭阃氲繃浜嗙紪璇戞镆ュ苟涓嶈〃绀洪敊璇宸茬粡涓嶅瓨鍦ㄤ简锛屽湪钬滈敊璇钬濈殑澶у跺涵閲岋纴钬滆娉曢敊璇钬濈殑鍦颁綅鍙鑳界畻鏄鍐板北涓瑙掋傜骇鍒楂樼殑阌栾阃氩父闅愯棌寰楀緢娣憋纴涓嶅规槗鍙戠幇銆
銆銆镙规嵁缁忛獙锛屼笉灏戦毦浠ュ疗瑙夌殑绋嫔簭阌栾鏄鐢变簬鍙橀噺娌℃湁琚姝g‘鍒濆嫔寲鎴栨竻闄ら犳垚镄勶纴钥屽埯濮嫔寲鍜屾竻闄ゅ伐浣滃緢瀹规槗琚浜洪仐蹇樸傚井杞鍒╃敤闱㈠悜瀵硅薄镄勬傚康鍦ㄨ捐C#璇瑷镞跺厖鍒呜冭槛浜呜繖涓闂棰桦苟寰埚ソ鍦颁篑浠ヨВ鍐筹细鎶婂硅薄镄勫埯濮嫔寲宸ヤ綔鏀惧湪鏋勯犲嚱鏁颁腑锛屾妸娓呴櫎宸ヤ綔鏀惧湪鏋愭瀯鍑芥暟涓銆傚綋瀵硅薄琚鍒涘缓镞讹纴鏋勯犲嚱鏁拌镊锷ㄦ墽琛屻傚綋瀵硅薄娑堜骸镞讹纴鏋愭瀯鍑芥暟琚镊锷ㄦ墽琛屻傝繖镙峰氨涓岖敤𨰾呭绩蹇樿板硅薄镄勫埯濮嫔寲鍜屾竻闄ゅ伐浣溿
銆銆 浜岋紟鏋勯犲嚱鏁板湪C#涓镄勮繍鐢
銆銆鏋勯犲嚱鏁扮殑钖嶅瓧涓嶈兘闅忎究璧凤纴蹇呴’璁╃紪璇戝櫒璁ゅ缑鍑烘墠鍙浠ヨ镊锷ㄦ墽琛屻傚畠镄勫懡钖嶆柟娉曟棦绠鍗曞张钖堢悊锛氲╂瀯阃犲嚱鏁颁笌绫诲悓钖嶃傞櫎浜嗗悕瀛楀栵纴鏋勯犲嚱鏁扮殑鍙︿竴涓鐗瑰埆涔嫔勬槸娌℃湁杩斿洖鍊肩被鍨嬶纴杩欎笌杩斿洖鍊肩被鍨嬩负void镄勫嚱鏁颁笉钖屻傚傛灉瀹冩湁杩斿洖鍊肩被鍨嬶纴闾d箞缂栬疟鍣ㄥ皢涓岖煡镓鎺銆傚湪浣犲彲浠ヨ块梾涓涓绫荤殑鏂规硶銆佸睘镐ф垨浠讳綍鍏跺畠涓滆タ涔嫔墠锛 绗涓𨱒℃墽琛岀殑璇鍙ユ槸鍖呭惈链夌浉搴旂被镄勬瀯阃犲嚱鏁般傜敋镊充綘镊宸变笉鍐欎竴涓鏋勯犲嚱鏁帮纴涔熶细链変竴涓缂虹渷鏋勯犲嚱鏁版彁渚涚粰浣犮
銆銆class TestClass
銆銆{
銆銆public TestClass(): base() {} // 鐢盋LR鎻愪緵
銆銆}
銆銆涓嬮溃鍒椾妇浜嗗嚑绉岖被鍨嬬殑鏋勯犲嚱鏁
銆銆1锛夌己鐪佹瀯阃犲嚱鏁
銆銆class TestClass
銆銆{
銆銆public TestClass(): base() {}
銆銆}
銆銆涓婇溃宸蹭粙缁嶏纴瀹幂敱绯荤粺锛圕LR锛夋彁渚涖
銆銆2锛夊疄渚嬫瀯阃犲嚱鏁
銆銆瀹炰緥鏋勯犲嚱鏁版槸瀹炵幇瀵圭被涓瀹炰緥杩涜屽埯濮嫔寲镄勬柟娉曟垚锻樸傚傦细
銆銆using System;
銆銆class Point
銆銆{
銆銆public double x, y;
銆銆public Point()
銆銆{
銆銆this.x = 0;
銆銆this.y = 0;
銆銆}
銆銆public Point(double x, double y)
銆銆{
銆銆this.x = x;
銆銆this.y = y;
銆銆}
銆銆}
銆銆class Test
銆銆{
銆銆static void Main()
銆銆{
銆銆Point a = new Point();
銆銆Point b = new Point(3, 4); // 鐢ㄦ瀯阃犲嚱鏁板埯濮嫔寲瀵硅薄
銆銆}
銆銆}
銆銆澹版槑浜嗕竴涓绫籔oint锛屽畠鎻愪緵浜嗕袱涓鏋勯犲嚱鏁般傚畠浠鏄閲嶈浇镄勚备竴涓鏄娌℃湁鍙傛暟镄凯oint鏋勯犲嚱鏁板拰涓涓鏄链変袱涓猟ouble鍙傛暟镄凯oint鏋勯犲嚱鏁般傚傛灉绫讳腑娌℃湁鎻愪緵杩欎簺鏋勯犲嚱鏁帮纴闾d箞浼欳LR浼氲嚜锷ㄦ彁渚涗竴涓缂虹渷鏋勯犲嚱鏁扮殑銆备絾涓镞︾被涓鎻愪緵浜呜嚜瀹氢箟镄勬瀯阃犲嚱鏁帮纴濡侾oint()鍜孭oint(double x, double y)锛屽垯缂虹渷鏋勯犲嚱鏁板皢涓崭细琚鎻愪緵锛岃繖涓镣硅佹敞镒忋
銆銆3锛 闱欐佹瀯阃犲嚱鏁
銆銆闱欐佹瀯阃犲嚱鏁版槸瀹炵幇瀵逛竴涓绫昏繘琛屽埯濮嫔寲镄勬柟娉曟垚锻樸傚畠涓鑸鐢ㄤ簬瀵归润镐佹暟鎹镄勫埯濮嫔寲銆傞润镐佹瀯阃犲嚱鏁颁笉鑳芥湁鍙傛暟锛屼笉鑳芥湁淇楗扮﹁屼笖涓嶈兘琚璋幂敤锛屽綋绫昏锷犺浇镞讹纴绫荤殑闱欐佹瀯阃犲嚱鏁拌嚜锷ㄨ璋幂敤銆傚傦细
銆銆using System.Data;
銆銆class Employee
銆銆{
銆銆private static DataSet ds;
銆銆static Employee()
銆銆{
銆銆ds = new DataSet(...);
銆銆}
銆銆}
銆銆澹版槑浜嗕竴涓链夐润镐佹瀯阃犲嚱鏁扮殑绫籈mployee銆傛敞镒忛润镐佹瀯阃犲嚱鏁板彧鑳藉归润镐佹暟鎹鎴愬憳杩涜屽埯濮嫔寲锛岃屼笉鑳藉归潪闱欐佹暟鎹鎴愬憳杩涜屽埯濮嫔寲銆备絾鏄锛岄潪闱欐佹瀯阃犲嚱鏁版棦鍙浠ュ归润镐佹暟鎹鎴愬憳璧嫔硷纴涔熷彲浠ュ归潪闱欐佹暟鎹鎴愬憳杩涜屽埯濮嫔寲銆
銆銆濡傛灉绫讳粎鍖呭惈闱欐佹垚锻桡纴浣犲彲浠ュ垱寤轰竴涓猵rivate镄勬瀯阃犲嚱鏁帮细private TestClass() {钬}锛屼絾鏄痯rivate镒忓懗镌浠庣被镄勫栭溃涓嶅彲鑳借块梾璇ユ瀯阃犲嚱鏁般傛墍浠ワ纴瀹冧笉鑳借璋幂敤锛屼笖娌℃湁瀵硅薄鍙浠ヨ璇ョ被瀹氢箟瀹炰緥鍖栥
銆銆浠ヤ笂鏄鍑犵岖被鍨嬫瀯阃犲嚱鏁扮殑绠鍗曡繍鐢锛屼笅闱㈠皢閲岖偣浠嬬粛涓涓嫔湪绫荤殑灞傛$粨鏋勪腑锛埚嵆缁ф圹缁撴瀯涓锛夊熀绫诲拰娲剧敓绫荤殑鏋勯犲嚱鏁扮殑浣跨敤鏂瑰纺銆傛淳鐢熺被瀵硅薄镄勫埯濮嫔寲鐢卞熀绫诲拰娲剧敓绫诲叡钖屽畬鎴愶细锘虹被镄勬垚锻樼敱锘虹被镄勬瀯阃犲嚱鏁板埯濮嫔寲锛屾淳鐢熺被镄勬垚锻樼敱娲剧敓绫荤殑鏋勯犲嚱鏁板埯濮嫔寲銆
銆銆褰揿垱寤烘淳鐢熺被镄勫硅薄镞讹纴绯荤粺灏嗕细璋幂敤锘虹被镄勬瀯阃犲嚱鏁板拰娲剧敓绫荤殑鏋勯犲嚱鏁帮纴鏋 阃犲嚱鏁扮殑镓ц屾″簭鏄锛氩厛镓ц屽熀绫荤殑鏋勯犲嚱鏁帮纴鍐嶆墽琛屾淳鐢熺被镄勬瀯阃犲嚱鏁般傚傛灉娲剧敓绫诲张链夊硅薄鎴愬憳锛屽垯锛屽厛镓ц屽熀绫荤殑鏋勯犲嚱鏁帮纴鍐嶆墽琛屾垚锻桦硅薄绫荤殑鏋勯犲嚱鏁帮纴链钖庢墽琛屾淳鐢熺被镄勬瀯阃犲嚱鏁般
銆銆镊充簬镓ц屽熀绫荤殑浠涔堟瀯阃犲嚱鏁帮纴缂虹渷𨱍呭喌涓嬫槸镓ц屽熀绫荤殑镞犲弬鏋勯犲嚱鏁帮纴濡傛灉瑕佹墽琛屽熀绫荤殑链夊弬鏋勯犲嚱鏁帮纴鍒椤繀椤诲湪娲剧敓绫绘瀯阃犲嚱鏁扮殑鎴愬憳鍒濆嫔寲琛ㄤ腑鎸囧嚭銆傚傦细
銆銆class A
銆銆{ private int x;
銆銆public A( ) { x = 0; }
銆銆public A( int i ) { x = i; }
銆銆};
銆銆class B : A
銆銆{ private int y;
銆銆public B( ) { y = 0; }
銆銆public B( int i ) { y = i; }
銆銆public B( int i, int j ):A(i) { y = j; }
銆銆};
銆銆B b1 = new B(); //镓ц屽熀绫籄镄勬瀯阃犲嚱鏁痨()锛屽啀镓ц屾淳鐢熺被镄勬瀯阃犲嚱鏁痫()
銆銆B b2 = new B(1); //镓ц屽熀绫籄镄勬瀯阃犲嚱鏁痨()锛屽啀镓ц屾淳鐢熺被镄勬瀯阃犲嚱鏁痫(int)
銆銆B b3 = new B(0,1); //镓ц屾墽琛屽熀绫籄镄勬瀯阃犲嚱鏁痨(int) 锛屽啀镓ц屾淳鐢熺被镄
銆銆鏋勯犲嚱鏁痫(int,int)
銆銆鍦ㄨ繖閲屾瀯阃犲嚱鏁扮殑镓ц屾″簭鏄涓瀹氲佸垎鏋愭竻妤氱殑銆傚彟澶栵纴濡傛灉锘虹被A涓娌℃湁鎻愪緵镞犲弬鏋勯犲嚱鏁皃ublic A( ) { x = 0; }锛屽垯鍦ㄦ淳鐢熺被镄勬墍链夋瀯阃犲嚱鏁版垚锻桦埯濮嫔寲琛ㄤ腑蹇呴’鎸囧嚭锘虹被A镄勬湁鍙傛瀯阃犲嚱鏁痨(i)锛屽备笅镓绀猴细
銆銆class A
銆銆{ private int x;
銆銆public A( int i ) { x = i; }
銆銆};
銆銆class B : A
銆銆{ private int y;
銆銆public B():A(i) { y = 0; }
銆銆public B(int i):A(i) { y = i; }
銆銆public B(int i, int j):A(i) { y = j; }
銆銆};
銆銆 涓夛紟鏋愭瀯鍑芥暟鍜屽瀮鍦惧洖鏀跺櫒鍦–#涓镄勮繍鐢
銆銆鏋愭瀯鍑芥暟鏄瀹炵幇阌姣佷竴涓绫荤殑瀹炰緥镄勬柟娉曟垚锻樸傛瀽鏋勫嚱鏁颁笉鑳芥湁鍙傛暟锛屼笉鑳戒换浣曚慨楗扮﹁屼笖涓嶈兘琚璋幂敤銆傜敱浜庢瀽鏋勫嚱鏁扮殑鐩镄勪笌鏋勯犲嚱鏁扮殑鐩稿弽锛屽氨锷犲墠缂钬榽钬欎互绀哄尯鍒銆
銆銆铏界劧C#锛堟洿纭鍒囩殑璇存槸CLR锛夋彁渚涗简涓绉嶆柊镄勫唴瀛樼$悊链哄埗---镊锷ㄥ唴瀛樼$悊链哄埗锛圆utomatic memory management锛夛纴璧勬簮镄勯喷鏀炬槸鍙浠ラ氲繃钬滃瀮鍦惧洖鏀跺櫒钬 镊锷ㄥ畬鎴愮殑锛屼竴鑸涓嶉渶瑕佺敤鎴峰共棰勶纴浣嗗湪链変簺鐗规畩𨱍呭喌涓嬭缮鏄闇瑕佺敤鍒版瀽鏋勫嚱鏁扮殑锛屽傚湪C#涓闱炴墭绠¤祫婧愮殑閲婃斁銆
銆銆璧勬簮镄.閲婃斁涓鑸鏄阃氲繃"鍨冨溇锲炴敹鍣"镊锷ㄥ畬鎴愮殑,浣嗗叿浣撴潵璇,浠嶆湁浜涢渶瑕佹敞镒忕殑鍦版柟锛
銆銆1. 鍊肩被鍨嫔拰寮旷敤绫诲瀷镄勫紩鐢ㄥ叾瀹炴槸涓嶉渶瑕佷粈涔"鍨冨溇锲炴敹鍣"𨱒ラ喷鏀惧唴瀛樼殑,锲犱负褰揿畠浠鍑轰简浣灭敤锘熷悗浼氲嚜锷ㄩ喷鏀炬墍鍗犲唴瀛桡纴锲犱负瀹冧滑閮戒缭瀛桦湪镙(Stack)涓;
銆銆2. 鍙链夊紩鐢ㄧ被鍨嬬殑寮旷敤镓鎸囧悜镄勫硅薄瀹炰緥镓崭缭瀛桦湪鍫(Heap)涓,钥屽爢锲犱负鏄涓涓镊鐢卞瓨鍌ㄧ┖闂,镓浠ュ畠骞舵病链夊儚"镙"闾f牱链夌敓瀛樻湡("镙"镄勫厓绱犲脊鍑哄悗灏变唬琛ㄧ敓瀛樻湡缁撴潫,涔熷氨浠h〃閲婃斁浜嗗唴瀛),骞朵笖瑕佹敞镒忕殑鏄,"鍨冨溇锲炴敹鍣"鍙瀵硅繖鍧楀尯锘熻捣浣灭敤;
銆銆铹惰,链変簺𨱍呭喌涓嬶纴褰挞渶瑕侀喷鏀鹃潪镓樼¤祫婧愭椂,灏卞繀椤婚氲繃鍐欎唬镰佺殑鏂瑰纺𨱒ヨВ鍐炽傞氩父鏄浣跨敤鏋愭瀯鍑芥暟閲婃斁闱炴墭绠¤祫婧愶纴灏嗙敤鎴疯嚜宸辩紪鍐欑殑閲婃斁闱炴墭绠¤祫婧愮殑浠g爜娈垫斁鍦ㄦ瀽鏋勫嚱鏁颁腑鍗冲彲銆傞渶瑕佹敞镒忕殑鏄,濡傛灉涓涓绫讳腑娌℃湁浣跨敤鍒伴潪镓樼¤祫婧,闾d箞涓瀹氢笉瑕佸畾涔夋瀽鏋勫嚱鏁,杩欐槸锲犱负瀵硅薄镓ц屼简鏋愭瀯鍑芥暟,闾d箞"鍨冨溇锲炴敹鍣"鍦ㄩ喷鏀炬墭绠¤祫婧愪箣鍓嶈佸厛璋幂敤鏋愭瀯鍑芥暟锛岀劧钖庣浜屾℃墠鐪熸i喷鏀炬墭绠¤祫婧愶纴杩欐牱涓𨱒ワ纴涓ゆ″垹闄ゅ姩浣灭殑鑺遍攒姣斾竴娆″ぇ澶氱殑銆备笅闱浣跨敤涓娈典唬镰佹潵绀烘瀽鏋勫嚱鏁版槸濡备綍浣跨敤镄勶细
銆銆public class ResourceHolder
銆銆{
銆銆~ResourceHolder()
銆銆{
銆銆// 杩欓噷鏄娓呯悊闱炴墭绠¤祫婧愮殑鐢ㄦ埛浠g爜娈
銆銆}
銆銆}
銆銆 锲涳紟灏忕粨
銆銆鏋勯犲嚱鏁颁笌鏋愭瀯鍑芥暟铏界劧鏄涓涓绫讳腑褰㈠纺涓婅缉绠鍗旷殑鍑芥暟锛屼絾瀹冧滑镄勪娇鐢ㄥ喅闱炵湅涓婂幓闾d箞绠鍗曪纴锲犳ょ伒娲昏屾g‘镄勪娇鐢ㄦ瀯阃犲嚱鏁颁笌鏋愭瀯鍑芥暟鑳藉熷府浣犳洿濂界殑鐞呜ВCLR镄勫唴瀛樼$悊链哄埗锛屼互鍙婃洿濂界殑绠$悊绯荤粺涓镄勮祫婧愩
D. 什么叫构造函数
构造函数 - 简介
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值
总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
构造函数 - 构造函数与其他方法的区别
1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点
5当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
构造函数 - C++中的构造函数
C++的构造函数定义格式为: 构造函数
class
{
public:
(参数表)
//...(还可以声明其它成员函数)
};
::(参数表)
{
//函数体
}
如以下定义是合法的:
class T
{
public:
T(int a=0){i=a;}//构造函数允许直接写在类定义内,也允许有参数表。
private:int i;
};
当程序中没有析构函数时,系统会自动生成以下构造函数:
::(){},即不执行任何操作。
构造函数 - C++例子
//注意若将本代码直接复制进编译器,可能会报错,原因是网页生成时会在代码前加一个中文占位符
//最好将代码再写一次
#include
using namespace std;
class time
{
public:
time() //constructor.构造函数
{
hour=0;
minute=0;
sec=0;
}
void set_time();
void show_time();
private:
int hour;
int minute;
int sec;
};
int main()
{
class time t1;
t1.show_time();
t1.set_time();
t1.show_time();
return 0;
}
void time::set_time()
{
cin >>hour;
cin >>minute;
cin >>sec;
}
void time::show_time()
{ cout<}
程序运行情况:
0:0:0
10 11 11 回车
10:11:11
任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。
JAVA示例代码:
public class UserManagerImpl implements UserManager {
private UserDao userDao;
public UserManagerImpl(UserDao userDao){
this.userDao=userDao;
}
public void save(String username,String password){
this.userDao.save(username, password);
}
}
PHP中的构造函数
构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( )。这是PHP5中的变化;PHP4的版本中,构造函数的名称必须与类名相同。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个与类名相同的方法。
格式:function __construct ( [参数] ) { ... ... }
例子:
class person{
public $name;
public $age;
function _ _construct(){ // 构造函数
$this->name="lisi";
$this->age=28;
}
function say(){
echo "my name is ".$this->name."
";
echo "my age is ".$this->age."
";
}
}
$per=new person();
$per->say();
$per->name="zhangsan";
$per->age=26;
$per->say();
?>
C#例子
构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
在下面的示例中,使用一个简单的构造函数定义了名为 Taxi 的类。然后使用 new 运算符来实例化该类。在为新对象分配内存之后,new 运算符立即调用 Taxi 构造函数。
public class Taxi{ public bool isInitialized; public Taxi() { isInitialized = true; }}class TestTaxi{ static void Main() { Taxi t = new Taxi(); System.Console.WriteLine(t.isInitialized); }}