新葡萄京娱乐场

模板方法形式

四月 4th, 2019  |  新葡萄京娱乐场

煎熬笨賊的高潮小時候看起來是超爽沒錯
明日卻整個讓作者毛骨悚然
平素就另類的驚悚片
nail gun直接射出來插進臀部然後臉上之類的
确实比較不適合心思輕鬆的夜幕阖家觀賞
就此小编早日的10點半就睡了
依然夢到張家輝
這什麼爛?

定義

模板方法方式由兩有的構成,第二局地是架空父類,第贰片段是具體的實現子類。平时在空虚父類中封裝了子類的算法框架,包蕴實現1些公共艺术以及封裝子類中有着办法的執行順序。子類的算法框架就是模板方法。

一、構造函數:

Java基礎語法

一個Java程序能够認為是一多元對象的聚众,而這些對象通過調用相互的不二等秘书籍來協同工作.

1.對象:對象是類的一個實例,有狀態和行為.(一個人的狀態和行為).
2.類:類是一個模板,它描述一類對象的行為和狀態.
3.方法:方法就是行為,一個類可以有很多方法.(邏輯運算、數據修改以及所有動作都是在方法中完成的).
4.實例變量:每個對象都有獨特的實例變量,對象的狀態由這些實例變量的值決定.

要點

  • 在模板方法格局中,子類實現中的相同部分被发展到父類中,而將区别的有的留待子類來實現。
  • 模板方法作為一個算法的模版,指導子類以何種順序去執行哪些方法。
  • 抽象類:模板方法格局是壹種嚴重依賴抽象類的設計情势。
  • 在 JavaScript
    中使用模板方法形式時,沒有辦法保證子類會重寫父類中的抽象方法。一種解決方案是在創建對象的時候,用鴨子類型來模擬接口檢查,缺點是增多了不须要的複雜性,在業務代碼中添加了跟業務邏輯無關的代碼;另壹種解決方案是讓父類的说梅止渴方法直接拋出1個異常,缺點是结束程序運行的時候才清楚哪裡出了錯。
  • 鉤子方法:放置鉤子是隔離變化的1種常用手法。笔者們在父類中简单變化的地点放置鉤子,鉤子能够有一個默認的實現,终究要不要「掛鉤」,根據子類鉤子方法的归来結果決定。
  • 好萊塢原則和模板方法情势:模板方法方式中,子類放棄了對自个儿的控制權,而是改為父類文告子類,哪些措施應該在什麼時候被調用。作為子類,只負責提供實現上的細節。
  • 在 JavaScript
    中,作者們能够通過高階函數的不2诀窍,而不是傳統的繼承的不2秘诀,來更好地實現1個模板方法形式。

構造函數是允許將類實例初步化為有效狀態的超过常规规形式,類被實例化時,自動執行構造函數。
如代碼:

主题語法

> 大小寫敏感:Java是大小寫敏感的,這就意味著標識符Hello與hello是不同的.
> 類名:對於所有的類來說,類名的首字母應該大寫.如果類名由若干單詞組成,那麼每個單詞的首字母應該大寫,例如MyJava.
> 方法名:所有的方法名都應該以小寫字母開頭.如果方法名含有若干單詞,,則後面的每個單詞首字母大寫.(駝峰命名法)
> 源文件名:必須和類名相同.當保存文件的時候,應該使用類名作為文件名保存.
> 主方法入口:所有的Java程序由 public static void main(String []args)方法開始執行.

主导代碼

var Beverage = function(param) {
    var boilWater = function() {
        \\ ...
    };
    var brew = param.brew || function() {
        throw new Error('必須傳遞 brew 方法');
    };
    var pourInCup = param.pourInCup || function() {
        throw new Error('必須傳遞 pourInCup 方法');
    };
    var addCondiments = param.addCondiments || function() {
        throw new Error('必須傳遞 addCondiments 方法');
    };

    var F = function() {};
    F.prototype.init = function() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    };

    return F;
};

var Tea = Beverage({
    brew: function() { \\ ... },
    pourInCup: function() { \\ ... },
    addCondiments: function() { \\ ... },
});
var tea = new Tea();
tea.init();

新葡萄京娱乐场 1using System;
新葡萄京娱乐场 2class A
新葡萄京娱乐场 3新葡萄京娱乐场 4新葡萄京娱乐场 5{
新葡萄京娱乐场 6    public A()
新葡萄京娱乐场 7新葡萄京娱乐场 8    新葡萄京娱乐场 9{
新葡萄京娱乐场 10        Console.WriteLine(“運行構造函數”);
新葡萄京娱乐场 11    }
新葡萄京娱乐场 12 }
新葡萄京娱乐场 13
新葡萄京娱乐场 14class Test
新葡萄京娱乐场 15新葡萄京娱乐场 16新葡萄京娱乐场 17{
新葡萄京娱乐场 18    static void Main()
新葡萄京娱乐场 19新葡萄京娱乐场 20    新葡萄京娱乐场 21{
新葡萄京娱乐场 22        //實例化a時,會自動執行構造函數
新葡萄京娱乐场 23        A a=new A ();
新葡萄京娱乐场 24        Console.ReadLine();
新葡萄京娱乐场 25    }    
新葡萄京娱乐场 26 }
新葡萄京娱乐场 27
新葡萄京娱乐场 28新葡萄京娱乐场 29/**//*
新葡萄京娱乐场 30 *結果為:
新葡萄京娱乐场 31 *運行構造函數
新葡萄京娱乐场 32 */
新葡萄京娱乐场 33

Java標識符

Java全数的組成都部队分都亟待名字.類名、變量名以及艺术名都被稱為標識符.

> 所有標識符都應該以字母(A-Z或a-z),美元符($),或者下劃線(_)開始
> 首字母之後可以是字母(A-Z或a-z),美元符($),或者下劃線(_)開始
> 關鍵字不能用作標識符
> 標識符是大小寫敏感的
> 合法標識符舉例:age、$sa、_people、_1_year
> 非法標識符:123abc,-age

二、類中成員變量賦值

Java修飾符

和其余語言壹樣,Java能够应用修飾符來修飾類中艺术和屬性.首要有兩類修飾符:

> 訪問控制修飾符:default、public、protexted、private
> 費訪問控制修飾符:final、abstarct、strictfp

壹经類中有成員變量時,在實例化在此之前,成員變量分配的空間為0,在實例化時,倘若成員變量未賦初值,則成員變量值會自動變為0或Null。
如代碼:

Java變量

> 局部變量
> 類變量 (靜態變量)
> 成員變量(非靜態變量)

新葡萄京娱乐场 34using System;
新葡萄京娱乐场 35class A
新葡萄京娱乐场 36新葡萄京娱乐场 37新葡萄京娱乐场 38{
新葡萄京娱乐场 39    public int i;
新葡萄京娱乐场 40    public string s;
新葡萄京娱乐场 41}
新葡萄京娱乐场 42
新葡萄京娱乐场 43class Test
新葡萄京娱乐场 44新葡萄京娱乐场 45新葡萄京娱乐场 46{
新葡萄京娱乐场 47    static void Main()
新葡萄京娱乐场 48新葡萄京娱乐场 49    新葡萄京娱乐场 50{
新葡萄京娱乐场 51        A a=new A ();
新葡萄京娱乐场 52        Console.WriteLine(“i=”,a.i);
新葡萄京娱乐场 53        Console.WriteLine(“s=”,a.s);
新葡萄京娱乐场 54        Console.ReadLine();
新葡萄京娱乐场 55    }    
新葡萄京娱乐场 56 }
新葡萄京娱乐场 57
新葡萄京娱乐场 58新葡萄京娱乐场 59/**//*
新葡萄京娱乐场 60 *結果為:
新葡萄京娱乐场 61 * 0
新葡萄京娱乐场 62 * NUll
新葡萄京娱乐场 63 */
新葡萄京娱乐场 64

Java數組

數組是儲存在堆上的對象,能够保留多個同類型變量.

叁、類的重載

Java枚舉

枚舉變量只好是預先設置好的值.使用枚舉能够減少代碼中的bug.(枚舉能够單獨聲明可能聲明在類裡面.方法、變量、構造函數也能够在枚舉中定義.

類的構造函數允許被重載,重載方法與方法重載一樣。
如代碼:

Java關鍵字

關鍵字不可能用於常量,變量,和别的標識符的名稱.

关键字 描述
abstract 抽象方法,抽象类的修饰符
assert 断言条件是否满足
boolean 布尔数据类型
break 跳出循环或者label代码段
byte 8-bit有符号数据类型
case switch语句的一个条件
catch 和try搭配捕捉異常信息
char 16-bit Unicode字符數據類型
class 定義類
const 未使用
continue 不執行循環體剩餘部分
default switch語句中的默認分支
do 循環語句,循環體至少會執行一次
double 64-bit雙精度浮點數
else if條件不成立時執行的分支
enum 枚舉類型
extends 表示一個類是另一個類的子類
final 表示一個值在初始化之後就不能再改變了,表示方法不能被重寫,後者一個類不能有子類
finally 為了完成執行的代碼而設計的,主要是為了程序的健壯性和完整性,無論有沒有異常發生都執行代碼
float 32-bit單精度浮點數
for for循環語句
goto 未使用
if 條件語句
implements 表示一個類實現了接口
import 導入類
instanceof 測試一個對象是否是某個類的實例
int 32位整型數
interface 接口,一種抽象的類型,僅有方法和常量的定義
long 64位整型數
native 表示方法用非java代碼實現
new 分配新的類實例
package 一系列相關類組成一個包
private 表示私有字段,或者方法等,只能從類內部訪問
protected 表示字段只能通過類或者其子類訪問,子類或者在同一個包內的其他類
public 表示共有屬性或者方法
return 方法返回值
short 16位數字
static 表示在類級別定義,所有實例共享的
strictfp 浮點數比較實用嚴格的規則
super 表示基類
switch 選擇語句
synchronized 表示同一个时间只能由一个线程访问的代码块
this 表示調用當前實例,或者調用另一個構造函數
throw 拋出異常
throws 定義方法可能拋出的異常
transient 修飾不要序列化的字段
try 表示代碼塊要做異常處理或者和finally配合表示是否拋出異常都執行finally中的代碼
void 標記方法不返回任何值
volatile 標記字段可以被多個線程訪問,而不做同步
while while循環

新葡萄京娱乐场 65using System;
新葡萄京娱乐场 66class A
新葡萄京娱乐场 67新葡萄京娱乐场 68新葡萄京娱乐场 69{
新葡萄京娱乐场 70    public int i;
新葡萄京娱乐场 71    public string s;
新葡萄京娱乐场 72    public A()
新葡萄京娱乐场 73新葡萄京娱乐场 74    新葡萄京娱乐场 75{
新葡萄京娱乐场 76    }
新葡萄京娱乐场 77    
新葡萄京娱乐场 78    //重載構造函數一
新葡萄京娱乐场 79    public A(int i)
新葡萄京娱乐场 80新葡萄京娱乐场 81    新葡萄京娱乐场 82模板方法形式。{
新葡萄京娱乐场 83        this.i=i;
新葡萄京娱乐场 84    }
新葡萄京娱乐场 85    
新葡萄京娱乐场 86    //重載構造函數二
新葡萄京娱乐场 87    public A(string s)
新葡萄京娱乐场 88新葡萄京娱乐场 89    新葡萄京娱乐场 90{
新葡萄京娱乐场 91        this.s=s;
新葡萄京娱乐场 92    }
新葡萄京娱乐场 93    
新葡萄京娱乐场 94    //重載構造函數三
新葡萄京娱乐场 95    public A(int i,string s)
新葡萄京娱乐场 96新葡萄京娱乐场 97    新葡萄京娱乐场 98{
新葡萄京娱乐场 99        this.i=i;
新葡萄京娱乐场 100        this.s=s;
新葡萄京娱乐场 101    }
新葡萄京娱乐场 102    
新葡萄京娱乐场 103}
新葡萄京娱乐场 104
新葡萄京娱乐场 105class Test
新葡萄京娱乐场 106新葡萄京娱乐场 107新葡萄京娱乐场 108{
新葡萄京娱乐场 109    static void Main()
新葡萄京娱乐场 110新葡萄京娱乐场 111    新葡萄京娱乐场 112{
新葡萄京娱乐场 113        A a=new A();        
新葡萄京娱乐场 114        Console.ReadLine();
新葡萄京娱乐场 115    }
新葡萄京娱乐场 116}
新葡萄京娱乐场 117

Java注釋

java也支撑單行以及多行注釋

/* */  單行注釋
//     單行注釋
/**
 *     多行注釋
/

4、類中This用法

Java

空白行,可能有注釋的行,Java編譯器都會忽略掉.

    This是類中隱含的指針,類被實例化時,會將實例化後的對象的地点傳遞給變量。This不代表類自个儿,而是指類實例化後所產生的類的對象。
如下面代碼中

繼承

在Java中,壹個類能够由别的類派生.若是你要創建一個類,而且已經存在壹個類具有你所急需的屬性和格局,那麼你就能够將新創建的類繼承該類.
选择繼承的章程,可以引用已存在類的措施和屬性,而不用重寫這些代碼.被繼承的類成為超類(super
class),派生類稱為子類.

新葡萄京娱乐场 118如上面代碼中
新葡萄京娱乐场 119    //重載構造函數1
新葡萄京娱乐场 120    public A(int i)
新葡萄京娱乐场 121新葡萄京娱乐场 122    新葡萄京娱乐场 123{        
新葡萄京娱乐场 124        this.i=i;
新葡萄京娱乐场 125    }
新葡萄京娱乐场 126//this.i=i,表示實例化後的a。
新葡萄京娱乐场 127//this.i代表a中的i,而後邊的i表示形參i
新葡萄京娱乐场 128

接口

在Java中,接口可通晓為對象間相互通讯的協議.接口在繼承中扮演者很重大的剧中人物.
接口只定義派生要用到的法子,可是方法的具體實現完全取決于派生類.

5、類中重載構造函數調用無參構造函數

Java源程序与编写翻译型运行差异

新葡萄京娱乐场 129

類中有成員變數時,假若成員變數賦了初值,這樣每便實例化時,都會被賦初值.這樣會造成代碼冗餘的問題.小编們能够定義成員變量,在無參構造函數中賦初值,别的有參構造函數都調用無參構造函數.用:this(),這樣無參函數就會先調用無參構造函數,然後在調用本人代碼。

常用的转义字符

"\b" (退格)
"\f" (換頁)
"\n" (換行)
"\r" (回車)
"\t" (水平製表符(到下一個tab位置))
"\'" (單引號)
"\"" (雙引號)
"\\" (反斜杠)

如代碼:

新葡萄京娱乐场 130using System;
新葡萄京娱乐场 131class A
新葡萄京娱乐场 132新葡萄京娱乐场 133新葡萄京娱乐场 134{
新葡萄京娱乐场 135    public int i;
新葡萄京娱乐场 136    public string s;
新葡萄京娱乐场 137    public A()
新葡萄京娱乐场 138新葡萄京娱乐场 139新葡萄京娱乐场 ,    新葡萄京娱乐场 140{
新葡萄京娱乐场 141        i=100;
新葡萄京娱乐场 142        s=”string”;
新葡萄京娱乐场 143    }
新葡萄京娱乐场 144    
新葡萄京娱乐场 145    //重載構造函數一
新葡萄京娱乐场 146    public A(int i):this()
新葡萄京娱乐场 147新葡萄京娱乐场 148    新葡萄京娱乐场 149{
新葡萄京娱乐场 150        this.i=i;
新葡萄京娱乐场 151    }
新葡萄京娱乐场 152    
新葡萄京娱乐场 153    //重載構造函數二
新葡萄京娱乐场 154    public A(string s):this()
新葡萄京娱乐场 155新葡萄京娱乐场 156    新葡萄京娱乐场 157{
新葡萄京娱乐场 158        this.s=s;
新葡萄京娱乐场 159    }
新葡萄京娱乐场 160    
新葡萄京娱乐场 161    //重載構造函數三
新葡萄京娱乐场 162    public A(int i,string s):this()
新葡萄京娱乐场 163新葡萄京娱乐场 164    新葡萄京娱乐场 165{
新葡萄京娱乐场 166        this.i=i;
新葡萄京娱乐场 167        this.s=s;
新葡萄京娱乐场 168    }
新葡萄京娱乐场 169    
新葡萄京娱乐场 170}
新葡萄京娱乐场 171
新葡萄京娱乐场 172class Test
新葡萄京娱乐场 173新葡萄京娱乐场 174新葡萄京娱乐场 175{
新葡萄京娱乐场 176    static void Main()
新葡萄京娱乐场 177新葡萄京娱乐场 178    新葡萄京娱乐场 179{
新葡萄京娱乐场 180        A a=new A();
新葡萄京娱乐场 181        Console.WriteLine(“小编是首先個構造器函數產生的”);
新葡萄京娱乐场 182        Console.WriteLine(a.i);
新葡萄京娱乐场 183        Console.WriteLine(a.s);
新葡萄京娱乐场 184        
新葡萄京娱乐场 185        A a1=new A(1);
新葡萄京娱乐场 186        Console.WriteLine(“小编是第二個構造器函數產生的”);
新葡萄京娱乐场 187        Console.WriteLine(a1.i);
新葡萄京娱乐场 188        Console.WriteLine(a1.s);
新葡萄京娱乐场 189        
新葡萄京娱乐场 190        A a二=new A(“第二個構造器函數參數”);
新葡萄京娱乐场 191        Console.WriteLine(“笔者是第1個構造器函數產生的”);
新葡萄京娱乐场 192        Console.WriteLine(a2.i);
新葡萄京娱乐场 193        Console.WriteLine(a2.s);
新葡萄京娱乐场 194        
新葡萄京娱乐场 195        A a三=new A(3,”第伍個構造器函數參數”);
新葡萄京娱乐场 196        Console.WriteLine(“小编是第伍個構造器函數產生的”);
新葡萄京娱乐场 197        Console.WriteLine(a3.i);
新葡萄京娱乐场 198        Console.WriteLine(a3.s);
新葡萄京娱乐场 199        
新葡萄京娱乐场 200        Console.ReadLine();
新葡萄京娱乐场 201    }
新葡萄京娱乐场 202}
新葡萄京娱乐场 203
新葡萄京娱乐场 204新葡萄京娱乐场 205/**//*
新葡萄京娱乐场 206結果:
新葡萄京娱乐场 207作者是首先個構造器函數產生的
新葡萄京娱乐场 208100
新葡萄京娱乐场 209string
新葡萄京娱乐场 210自家是第2個構造器函數產生的
新葡萄京娱乐场 2111
新葡萄京娱乐场 212string
新葡萄京娱乐场 213本人是第3個構造器函數產生的
新葡萄京娱乐场 214100
新葡萄京娱乐场 215其叁個構造器函數參數
新葡萄京娱乐场 216自个儿是第肆個構造器函數產生的
新葡萄京娱乐场 2173
新葡萄京娱乐场 218第四個構造器函數參數
新葡萄京娱乐场 219
新葡萄京娱乐场 220*/
新葡萄京娱乐场 221

六、類的繼存

類的繼存用 “:被繼存的類 “的点子。當實例化繼存的類時,首先會執行父類的構造函數,然後在執行本身的構造函數。
如代碼:

新葡萄京娱乐场 222using System;
新葡萄京娱乐场 223class A
新葡萄京娱乐场 224新葡萄京娱乐场 225新葡萄京娱乐场 226{
新葡萄京娱乐场 227    public A()
新葡萄京娱乐场 228新葡萄京娱乐场 229    新葡萄京娱乐场 230{
新葡萄京娱乐场 231        Console.WriteLine(“A類的無參構造函數”);
新葡萄京娱乐场 232    }
新葡萄京娱乐场 233}
新葡萄京娱乐场 234
新葡萄京娱乐场 235//B繼存A,A為B的父類
新葡萄京娱乐场 236class B:A
新葡萄京娱乐场 237新葡萄京娱乐场 238新葡萄京娱乐场 239{
新葡萄京娱乐场 240    public B()
新葡萄京娱乐场 241新葡萄京娱乐场 242    新葡萄京娱乐场 243{
新葡萄京娱乐场 244        Console.WriteLine(“B類的無參構造函數”);
新葡萄京娱乐场 245    }
新葡萄京娱乐场 246}
新葡萄京娱乐场 247
新葡萄京娱乐场 248class Test
新葡萄京娱乐场 249新葡萄京娱乐场 250新葡萄京娱乐场 251{
新葡萄京娱乐场 252    static void Main()
新葡萄京娱乐场 253新葡萄京娱乐场 254    新葡萄京娱乐场 255{
新葡萄京娱乐场 256        B b=new B();
新葡萄京娱乐场 257        Console.ReadLine();
新葡萄京娱乐场 258    }
新葡萄京娱乐场 259}
新葡萄京娱乐场 260
新葡萄京娱乐场 261新葡萄京娱乐场 262/**//*
新葡萄京娱乐场 263結果為:
新葡萄京娱乐场 264A類的無參構造函數
新葡萄京娱乐场 265B類的無參構造函數
新葡萄京娱乐场 266*/
新葡萄京娱乐场 267

7、類繼存注意問題

七.1父類A一定要有1個無參構造函數。假如類A沒有無參構造函數時,程式會出錯。
      七.二類在沒有有參構造函數時會自動生成無參構造函數,當有有參構造函數時,類就不會自動生成無參構造函數。
      七.三當類繼存時,父類要寫明無參構造函數。如下例中類B會自動調用父類A的無參構造函數。因為類會自動生成無參構造函數。即便類B沒有寫明無參構造函數,但會自動生成,他會尋找父類的無參構造函數。
如代碼:

新葡萄京娱乐场 268using System;
新葡萄京娱乐场 269class A
新葡萄京娱乐场 270新葡萄京娱乐场 271新葡萄京娱乐场 272{
新葡萄京娱乐场 273    public A()
新葡萄京娱乐场 274新葡萄京娱乐场 275    新葡萄京娱乐场 276{
新葡萄京娱乐场 277        Console.WriteLine(“A類的無參構造函數”);
新葡萄京娱乐场 278    }
新葡萄京娱乐场 279    public A(int i)
新葡萄京娱乐场 280新葡萄京娱乐场 281    新葡萄京娱乐场 282{
新葡萄京娱乐场 283        Console.WriteLine(“A類的1個整型參數構造函數”);
新葡萄京娱乐场 284    }
新葡萄京娱乐场 285}
新葡萄京娱乐场 286
新葡萄京娱乐场 287//B繼存A,A為B的父類
新葡萄京娱乐场 288class B:A
新葡萄京娱乐场 289新葡萄京娱乐场 290新葡萄京娱乐场 291{
新葡萄京娱乐场 292    public B()
新葡萄京娱乐场 293新葡萄京娱乐场 294    新葡萄京娱乐场 295{
新葡萄京娱乐场 296        Console.WriteLine(“B類的無參構造函數”);
新葡萄京娱乐场 297    }
新葡萄京娱乐场 298    public B(int i)
新葡萄京娱乐场 299新葡萄京娱乐场 300    新葡萄京娱乐场 301{
新葡萄京娱乐场 302        Console.WriteLine(“B類的一個整型參數構造函數”);
新葡萄京娱乐场 303    }
新葡萄京娱乐场 304}
新葡萄京娱乐场 305
新葡萄京娱乐场 306class Test
新葡萄京娱乐场 307新葡萄京娱乐场 308新葡萄京娱乐场 309{
新葡萄京娱乐场 310    static void Main()
新葡萄京娱乐场 311新葡萄京娱乐场 312    新葡萄京娱乐场 313{
新葡萄京娱乐场 314        B b=new B(100);
新葡萄京娱乐场 315        Console.ReadLine();
新葡萄京娱乐场 316    }
新葡萄京娱乐场 317}
新葡萄京娱乐场 318
新葡萄京娱乐场 319新葡萄京娱乐场 320/**//*結果
新葡萄京娱乐场 321 * A類的無參構造函數
新葡萄京娱乐场 322 * B類的一個整型參數構造函數
新葡萄京娱乐场 323*/
新葡萄京娱乐场 324

八、钦赐構造函數

類中用“Base:執行父類”的法门钦赐的執行的構造函數
如代碼:

新葡萄京娱乐场 325using System;
新葡萄京娱乐场 326class A
新葡萄京娱乐场 327新葡萄京娱乐场 328新葡萄京娱乐场 329{
新葡萄京娱乐场 330    public A()
新葡萄京娱乐场 331新葡萄京娱乐场 332    新葡萄京娱乐场 333{
新葡萄京娱乐场 334        Console.WriteLine(“A類的無參構造函數”);
新葡萄京娱乐场 335    }
新葡萄京娱乐场 336    public A(int i)
新葡萄京娱乐场 337新葡萄京娱乐场 338    新葡萄京娱乐场 339{
新葡萄京娱乐场 340        Console.WriteLine(“A類的一個整型參數構造函數”);
新葡萄京娱乐场 341    }
新葡萄京娱乐场 342}
新葡萄京娱乐场 343
新葡萄京娱乐场 344//B繼存A,A為B的父類
新葡萄京娱乐场 345class B:A
新葡萄京娱乐场 346新葡萄京娱乐场 347新葡萄京娱乐场 348{
新葡萄京娱乐场 349    public B()
新葡萄京娱乐场 350新葡萄京娱乐场 351    新葡萄京娱乐场 352{
新葡萄京娱乐场 353        Console.WriteLine(“B類的無參構造函數”);
新葡萄京娱乐场 354    }
新葡萄京娱乐场 355    //Base:執行父類钦命的構造函數,此處只會執行類A的public A(int i)構造函數
新葡萄京娱乐场 356    public B(int i):base(50)
新葡萄京娱乐场 357新葡萄京娱乐场 358    新葡萄京娱乐场 359{
新葡萄京娱乐场 360        Console.WriteLine(“B類的一個整型參數構造函數”);
新葡萄京娱乐场 361    }
新葡萄京娱乐场 362}
新葡萄京娱乐场 363
新葡萄京娱乐场 364class Test
新葡萄京娱乐场 365新葡萄京娱乐场 366新葡萄京娱乐场 367{
新葡萄京娱乐场 368    static void Main()
新葡萄京娱乐场 369新葡萄京娱乐场 370    新葡萄京娱乐场 371{
新葡萄京娱乐场 372        B b=new B(100);
新葡萄京娱乐场 373        Console.ReadLine();
新葡萄京娱乐场 374    }
新葡萄京娱乐场 375}
新葡萄京娱乐场 376新葡萄京娱乐场 377/**//*
新葡萄京娱乐场 378A類的1個整型參數構造函數
新葡萄京娱乐场 379B類的一個整型參數構造函數
新葡萄京娱乐场 380*/
新葡萄京娱乐场 381

九、靜態構造函數
    九.一靜態構造函數是實現對1個類進行初步化的措施。它壹般用於對靜態資料的初始化。靜態構造函數无法有參數,不可能有修飾符,而且不可能被調用,當類被載入時,類的靜態構造函數自動被調用。
    9.2特點:
        在1個程式的執行過程中,靜態構造函數最六只執行一次
       
靜態構造函數在類的靜態成員初阶化之後執行。或许講編譯器會將靜態成員伊始化語句轉換成賦值語句放在靜態構造函數執行的最開始。
        靜態構造函數在别的類的靜態成員被引述之前執行。
        靜態構造函數在其余類的實例變更被分配此前執行。
    九.三重点意义:
        對類的靜態成員作起始化
    9.4:注意
       
倘诺類中定義了靜態變數並賦初值,則類會自動創建1個靜態構造函數,為這個變數賦初值。假诺此變數沒有賦初值,則類就不會自動創建靜態構造函數。
        靜態構造函數在變數使用在此以前初載入。
如代碼:

新葡萄京娱乐场 382using System;
新葡萄京娱乐场 383class A
新葡萄京娱乐场 384新葡萄京娱乐场 385新葡萄京娱乐场 386{
新葡萄京娱乐场 387    public static int i=100;
新葡萄京娱乐场 388    static A()
新葡萄京娱乐场 389新葡萄京娱乐场 390    新葡萄京娱乐场 391{
新葡萄京娱乐场 392        Console.WriteLine(“A類的靜態構造函數”);
新葡萄京娱乐场 393    }
新葡萄京娱乐场 394    public A()
新葡萄京娱乐场 395新葡萄京娱乐场 396    新葡萄京娱乐场 397{
新葡萄京娱乐场 398        Console.WriteLine(“A類的無參構造函數”);
新葡萄京娱乐场 399    }
新葡萄京娱乐场 400}
新葡萄京娱乐场 401
新葡萄京娱乐场 402class Test
新葡萄京娱乐场 403新葡萄京娱乐场 404新葡萄京娱乐场 405{
新葡萄京娱乐场 406    static void Main()
新葡萄京娱乐场 407新葡萄京娱乐场 408    新葡萄京娱乐场 409{
新葡萄京娱乐场 410        Console.WriteLine(A.i);
新葡萄京娱乐场 411        
新葡萄京娱乐场 412        Console.ReadLine();
新葡萄京娱乐场 413    }
新葡萄京娱乐场 414}
新葡萄京娱乐场 415新葡萄京娱乐场 416/**//*
新葡萄京娱乐场 417 * 結果為:
新葡萄京娱乐场 418 * A類的靜態構造函數
新葡萄京娱乐场 419 * 100
新葡萄京娱乐场 420 */
新葡萄京娱乐场 421
新葡萄京娱乐场 422

玖.5 在一個程式的執行過程中,靜態構造函數最三只執行叁遍
如代碼:

新葡萄京娱乐场 423using System;
新葡萄京娱乐场 424class A
新葡萄京娱乐场 425新葡萄京娱乐场 426新葡萄京娱乐场 427{
新葡萄京娱乐场 428    public static int i=100;
新葡萄京娱乐场 429    static A()
新葡萄京娱乐场 430新葡萄京娱乐场 431    新葡萄京娱乐场 432{
新葡萄京娱乐场 433        Console.WriteLine(“A類的靜態構造函數”);
新葡萄京娱乐场 434    }
新葡萄京娱乐场 435    public A()
新葡萄京娱乐场 436新葡萄京娱乐场 437    新葡萄京娱乐场 438{
新葡萄京娱乐场 439        Console.WriteLine(“A類的無參構造函數”);
新葡萄京娱乐场 440    }
新葡萄京娱乐场 441}
新葡萄京娱乐场 442 class Test
新葡萄京娱乐场 443新葡萄京娱乐场 444新葡萄京娱乐场 445{
新葡萄京娱乐场 446    static void Main()
新葡萄京娱乐场 447新葡萄京娱乐场 448    新葡萄京娱乐场 449{
新葡萄京娱乐场 450        A a=new A();
新葡萄京娱乐场 451        
新葡萄京娱乐场 452        A a1=new A();
新葡萄京娱乐场 453        Console.ReadLine();
新葡萄京娱乐场 454    }
新葡萄京娱乐场 455}
新葡萄京娱乐场 456新葡萄京娱乐场 457  /**//* 結果為:
新葡萄京娱乐场 458 * A類的靜態構造函數
新葡萄京娱乐场 459 * A類的無參構造函數
新葡萄京娱乐场 460 * A類的無參構造函數

新葡萄京娱乐场 461 */新葡萄京娱乐场 462
新葡萄京娱乐场 463

Your Comments

近期评论

    功能


    网站地图xml地图