那么,類是什么,用來做什么?類定義了一組列特征和實現,而對象是它們的實現。形象的說,一個類對于對象來說就像一個通往金門的大橋。一個結構必須滿足這個橋梁定義的需求:必須跨域一個差異,并至少兩個接入點;區別是它們的材料和位置。應用在代碼中也是一樣,對象必須符合類的需求,是它的實例,并有著自身的特點。
聲明一個類的基本語法如下:
~~~
class ClassName extends SuperClass, implements Interfac e
{
//...
}
~~~
class 關鍵字表示要聲明一個類。可以在一個文件中聲明多個類。不加訪問修飾符前綴 private 的類被認為是 public ,只要正確的導入就可以在任何地方訪問,下一章將會介紹。私有類只有在聲明的文件中可用。下面的類 A 是公共類,而 B 是私有類。
~~~
class A
{ //... }
private class B
{ //... }
~~~
類名是一個或者多個字母數字字符的組合,包括下劃線,以一個大寫字母開始,這個約定被編譯器強制實現,否則會拋出一個編譯錯誤。類名可選的可以跟一個 extends 關鍵字,代表繼承自某個父類。最終類的聲明可以包括一個或者多個實現接口的聲明(implenents)。對于每個 implements ,一個單獨的類名或者接口名必須指定。
類中的功能被暴露為兩種字段(也被稱為成員):
* 變量 : 值得占位符容器,供對象引用,或者函數定義。變量可以被有效的訪問和修改值。
* 函數:對象或者類可以執行的操作。
變量和函數可以被聲明為靜態成員或者一個實例。 A 靜態成員屬于類本身,并總是可以訪問;一個實例成員根據是否存在被指定到一個對象。
作為一個例子,假設的CMS中一個blog入口類被提供:
~~~
class Main
{
static function main()
{
var entry : BlogEntry = new BlogEntry();
entry.title = “My First Blog Entry”;
entry.content = “Lorem ipsum ...”;
trace(entry.title);
}
}
class BlogEntry
{
public var title : String;
public var content : String;
public function new ()
{
//...
}
}
~~~
定義了兩個類。Main 只是測試代碼執行的入口點,而 BlogEntry 是CMS 業務邏輯的一部分。 BlogEntry 只定義了一個放置信息數據容器:兩個變量的聲明,title 和 content ,和一個方法 new ,留空了實現。
字段訪問,就像在 main 函數中展示的,使用的是 點號 語法,和其他許多如C/C++/C# 和JAVA 等語言中類似。
要編譯這個例子,保存代碼為單獨的文件,命名 Main.hx ,打開命令行,導航到文件保存的目錄下然后輸入以下命令:
~~~
haxe -main Main.hx -neko main.n
~~~
會生成一個main.n 文件。這個可以在命令行中執行,并顯示結果,命令如下:
~~~
neko main.n
~~~
這里,Neko 是執行目標平臺,但是任何支持的平臺都可以使用。本章所有例子都兼容所有的 Haxe 支持平臺,除非另有說明。
靜態方法,就像前面例子中的 main 函數,將在后面講述,但是記住當執行一段Haxe 代碼時,總是需要一個類實現一個名字為 main 的靜態方法,這將在啟動時自動運行。包含這個方法的類必須在編譯指令中使用 -main 開關指定。沒有 -main 的編譯會建立一個類庫的輸出;類庫可以在其他應用中復用但是不能被自身使用。
- 本書目錄
- 第一章:Haxe介紹
- 互聯網開發的一個問題
- Haxe是什么,為什么產生
- Haxe編譯工具
- Haxe語言
- Haxe如何工作
- 那么Neko是什么
- Haxe和Neko的必須條件
- 本章摘要
- 第二章:安裝、使用Haxe和Neko
- 安裝Haxe
- 使用Haxe安裝程序
- 在Windows上手動安裝Haxe
- Linux上手動安裝Haxe
- 安裝Neko
- Windows上手動安裝Neko
- 在Linux上安裝Neko
- Hello world! 一式三份
- 編譯你的第一個Haxe應用
- 你的程序如何編譯
- HXML編譯文件
- 編譯到Neko
- 編譯為JavaScript
- 程序結構
- 編譯工具開關
- 本章摘要
- 第三章:基礎知識學習
- Haxe層級結構
- 標準數據類型
- 變量
- 類型推斷
- 常數變量
- 簡單的值類型
- 浮點類型
- 整型
- 選擇數值類型
- 布爾類型
- 字符串類型
- 抽象類型
- Void 和 Null
- 動態類型
- unknown類型
- 使用untyped繞過靜態類型
- 注釋代碼
- 轉換數據類型
- Haxe數組
- Array
- List
- Map
- Haxe中使用日期時間
- 創建一個時間對象
- Date組件
- DateTools類
- 操作數據
- 操作符
- Math類
- 使用String函數
- 本章摘要
- 第四章:信息流控制
- 數據存放之外
- 條件語句
- if語句
- switch語句
- 從條件語句返回值
- 循環
- while循環
- for循環
- 循環集合
- Break和Continue
- 函數
- 類的函數
- 局部函數
- Lambda類
- 本章摘要
- 第五章:深入面向對象編程
- 類和對象
- 實例字段
- 靜態字段
- 理解繼承
- Super
- 函數重載
- 構造器重載
- toString()
- 抽象類和抽象方法
- 靜態字段,實例變量和繼承
- 繼承規則
- 使用接口
- 高級類和對象特性
- 類的實現
- 類型參數
- 匿名對象
- 實現動態
- Typedef
- 擴展
- 枚舉
- 構造器參數
- 本章摘要
- 第六章:組織你的代碼
- 編寫可重用代碼
- 使用包
- 聲明一個包
- 隱式導入
- 顯式導入
- 枚舉和包
- 類型查找順序
- 導入一個完整的包
- 導入庫
- Haxe標準庫
- Haxelib庫
- 其他項目中的庫
- 外部庫
- 使用資源
- 文檔化代碼
- 離線文檔
- 在線文檔
- 單元測試
- haxe.unit包
- 編寫測試
- 本章摘要
- 第七章:錯誤調試
- trace函數
- trace輸出
- haxe的trace和ActionScript的trace
- 異常
- 異常處理
- CallStack和ExceptionStack
- 異常管理類
- 創建完全的異常處理類
- 異常類代碼
- 本章摘要
- 第八章:跨平臺工具
- XML
- XML剖析
- Haxe XML API
- 正則表達式
- EReg類
- 模式
- 定時器
- 延遲動作
- 隊列動作
- MD5
- 本章摘要
- 第九章:使用Haxe構建網站
- Web開發介紹
- Web 服務器
- 使用Web服務器發布內容
- HTML速成課程
- Haxe和HTML的區別
- NekoTools Web Server
- Apache安裝mod_neko
- Windows安裝Apache和mod_neko
- Linux安裝Apache和Mod_Neko
- 第一個Haxe網站
- 使用Neko作為網頁Controller
- neko.Web類
- Neko作為前端控制器
- 本章摘要
- 第十章:使用模板進行分離式設計
- 什么是模板
- Template類
- Template語法
- 使用資產
- 何時在模板中使用代碼
- 服務器端模板的Templo
- 安裝Templo
- 使用Templo
- haxe.Template和mtwin.Templo表達式上的區別
- Attr表達式
- Raw表達式
- 邏輯表達式
- 循環表達式
- set, fill, 和 use表達式
- Templo中使用宏
- 手動編譯模版
- 第十一章:執行服務端技巧
- 第十二章:使用Flash構建交互內容
- 第十三章:使用IDE
- 第十四章:通過JavaScript制作更多交互內容
- 第十五章:通過Haxe遠程通信連接所學
- 第十六章:Haxe高級話題
- 第十七章:Neko開發桌面應用
- 第十八章:用SWHX開發桌面Flash
- 第十九章:多媒體和Neko
- 第二十章:使用C/C++擴展Haxe
- 附加部分