flash学习笔记(七)--创建自定义类和进行面向对象的编程
第十七章 创建自定义类和进行面向对象的编程
- 新建as文档,就是类(和java差不多)
package{
public class HelloWorld{
public function myPrint():String{
return "Hello World!";
}
}
}
在flash中import HelloWorld
注意:FLA文件被编译为SWF文件
- 对于面向对象的理解:
按定义来说很简单:抽象、继承、封装、多态
车:抽象出类 car
继承:车是一个广义的概念,自行车也是车 bicycle继承car
封装:车和自行车都有属性,放在一个类中就是封装,调用方便
那么,为什么面向对象比面向过程好呢?
1、 如果你的程序特别小,只有几百行代码,没有必要面向对象;面向对象是针对大量重复调用公共函数(类)的方法。
2、 当你的项目特别大时,面向对象中的类的重复调用的好处就体现出来了。
3、 面向对象的维护也比面向过程容易。
4、 当理解了面向对象后,就要了解设计模式、框架之类的东西了。
注:有句话很赞同,面向过程注重功能实现,面向对象注重提供API
- 使用as3.0定义类或者接口的脚本必须存储为外部脚本文件.as,并且在每个脚本中定义一个公共类。
- 对于as文档:
1> 类必须用class声明,可以public才能够调用
2> Class中定义属性或者函数
3> 类必须使用包作为容器,package
4> 注意:构造函数,在类中public HelloWorld():void{}//空的
- 方法的重载:
Flash不支持冲在overLoad:变相实现
Pulic function myMethod(…args):void{
If(args.length == 2){
If(args[0] is int)
}
}
- 多个类可以放在同一个包中。
- 成员访问控制:
Internal:对统一包中的引用可见
Private:对同一个类中的引用可见
Protected:对同一类以及派生类中的引用可见
- 扩建内建ActionScript类:可以调用loadSound()方法
Class JukeBox extends sound{
Var songList:Array = new Array(“1.mp3”,”2.mp3”,”3.mp3”);
Function playSong(songID:Number){}
}
- 接口的继承:
Interface IA extends interface IB{}
- Super调用派生类的构造函数
- 重写方法和属性:
Classs Named_Cart extends Cart{
Public function Named_Cart():void{ }
Override public function doSomething():void{
//
}
}
注意:未被final声明;private不可见;数据类型、参数数量都一样
注意区别方法重载和方法覆盖的区别。
- 区别实例成员和类成员:
实例成员:也就是声明的实例调用的属性和方法;
类成员:就是直接通过类调用的静态成员。Public static var varialbeName;
- 创建动态类:
Public dynamic class Person{
Public var name:String;
Public var age:Number;
}
Var a_person:Person = new Person();
A_Person.hairColor = “Blue”;//由于是动态类,不会出错
- 接口和抽象类的区别:
抽象类:可以实现部分方法
接口:可以继承多个接口;方法不能有限制关键字
- 隐式获取/设置属性:
Var user:String;
Function get username():String{
Return user;
}
Function set username(name:String):void{
User = name;
}
使用:
Var name = obj.userName;
Obj.username = “Jack”;