模板方法情势

煎熬笨賊的高潮小時候看起來是超爽沒錯
前些天卻整個讓笔者毛骨悚然
常有就另類的驚悚片
nail gun直接射出來插進臀部然後臉上之類的
实在比較不適合心绪輕鬆的上午阖家觀賞
从而作者早日的10點半就睡了
居然夢到張家輝
這什麼爛?

定義

模板方法格局由兩有个别構成,第3有的是空虚父類,第3有的是具體的實現子類。平常在架空父類中封裝了子類的算法框架,包罗實現壹些共用艺术以及封裝子類中拥有办法的執行順序。子類的算法框架就是模板方法。

1、構造函數:

Java基礎語法

一個Java程序能够認為是壹层层對象的汇集,而這些對象通過調用相互的点子來協同工作.

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

要點

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

構造函數是允許將類實例初步化為有效狀態的区别日常情势,類被實例化時,自動執行構造函數。
如代碼:

主导語法

> 大小寫敏感: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

2、類中成員變量賦值

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數組

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

3、類的重載

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中,1個類能够由其他類派生.借使您要創建1個類,而且已經存在壹個類具有你所必要的屬性和方法,那麼你就足以將新創建的類繼承該類.
动用繼承的诀要,能够选取已存在類的章程和屬性,而不用重寫這些代碼.被繼承的類成為超類(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(“第3個構造器函數參數”);
新葡萄京娱乐场网址 191        Console.WriteLine(“小编是第一個構造器函數產生的”);
新葡萄京娱乐场网址 192        Console.WriteLine(a2.i);
新葡萄京娱乐场网址 193        Console.WriteLine(a2.s);
新葡萄京娱乐场网址 194        
新葡萄京娱乐场网址 195        A a三=new A(三,”第4個構造器函數參數”);
新葡萄京娱乐场网址 196        Console.WriteLine(“笔者是第6個構造器函數產生的”);
新葡萄京娱乐场网址 197        Console.WriteLine(a3.i);
新葡萄京娱乐场网址 198        Console.WriteLine(a3.s);
新葡萄京娱乐场网址 199        
新葡萄京娱乐场网址 200        Console.ReadLine();
新葡萄京娱乐场网址 201    }
新葡萄京娱乐场网址 202}
新葡萄京娱乐场网址 203
新葡萄京娱乐场网址 204新葡萄京娱乐场网址 205/**//*
新葡萄京娱乐场网址 206結果:
新葡萄京娱乐场网址 207自己是率先個構造器函數產生的
新葡萄京娱乐场网址 208100
新葡萄京娱乐场网址 209string
新葡萄京娱乐场网址 210自作者是第二個構造器函數產生的
新葡萄京娱乐场网址 2111
新葡萄京娱乐场网址 212string
新葡萄京娱乐场网址 213本身是第3個構造器函數產生的
新葡萄京娱乐场网址 214100
新葡萄京娱乐场网址 215其三個構造器函數參數
新葡萄京娱乐场网址 216自己是第伍個構造器函數產生的
新葡萄京娱乐场网址 2173
新葡萄京娱乐场网址 218第6個構造器函數參數
新葡萄京娱乐场网址 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、類繼存注意問題

七.一父類A一定要有一個無參構造函數。假使類A沒有無參構造函數時,程式會出錯。
      7.二類在沒有有參構造函數時會自動生成無參構造函數,當有有參構造函數時,類就不會自動生成無參構造函數。
      7.三當類繼存時,父類要寫明無參構造函數。如下例中類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類的1個整型參數構造函數
新葡萄京娱乐场网址 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類的1個整型參數構造函數”);
新葡萄京娱乐场网址 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類的1個整型參數構造函數
新葡萄京娱乐场网址 380*/
新葡萄京娱乐场网址 381

玖、靜態構造函數
    玖.一靜態構造函數是實現對1個類進行开首化的点子。它1般用於對靜態資料的起头化。靜態構造函數不能够有參數,不能够有修飾符,而且不能够被調用,當類被載入時,類的靜態構造函數自動被調用。
    9.2特點:
        在1個程式的執行過程中,靜態構造函數最八只執行3遍
       
靜態構造函數在類的靜態成員初阶化之後執行。可能講編譯器會將靜態成員开头化語句轉換成賦值語句放在靜態構造函數執行的最開始。
        靜態構造函數在其余類的靜態成員被引述之前執行。
        靜態構造函數在其余類的實例變更被分配从前執行。
    玖.3主要成效:
        對類的靜態成員作初阶化
    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

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

新葡萄京娱乐场网址 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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图