那么,类是什么,用来做什么?类定义了一组列特征和实现,而对象是它们的实现。形象的说,一个类对于对象来说就像一个通往金门的大桥。一个结构必须满足这个桥梁定义的需求:必须跨域一个差异,并至少两个接入点;区别是它们的材料和位置。应用在代码中也是一样,对象必须符合类的需求,是它的实例,并有着自身的特点。
声明一个类的基本语法如下:
~~~
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
- 附加部分