ActionScript_3_互动编程_第四讲.doc_第1页
ActionScript_3_互动编程_第四讲.doc_第2页
ActionScript_3_互动编程_第四讲.doc_第3页
ActionScript_3_互动编程_第四讲.doc_第4页
ActionScript_3_互动编程_第四讲.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ActionScript_3_互动编程_第五讲第五讲 封装前言 前一讲,我们介绍了类和对象的基本知识和应用。算是开始跨入了面向对象大门的第一步。这一讲我们来接触面向对象编程的思想三大精髓之一封装。主要包括:类的成员访问控制、包和类的访问控制、命名空间的使用,我们主要讲前两者内容。封装意思是将实现的细节隐藏起来,只将必要的功能接口对外公开。使用这些代码单元的用户只知道这个单元能够实现什么样的功能,但是却不知道具体是怎么实现的。 就像我们使用的电脑,我们只需要使用按下按键A就可以在电脑中呈现出A这个字母。大家都会用,但是我们并不知道线路板和CPU是怎么工作的,但这一点也不影响我们的使用。在AS中,使用访问控制关键字来告诉外部使用者哪部分是可以被外部访问到,哪部分可以被外部访问到。如果对访问控制关键字按照从毫无控制到严格控制来排个序,如下面:public protected internal private public 对外部完全公开 protected 子类可见 internal 包内可见private 外部不可见封装的好处1、封装使修改代码更加安全和容易。 一般来说,软件的修改时间和开发时间相等。所以我们所写的代码要经得起反复修改。我们要保证我们所作的修改不会危害其他代码的稳定性。我们只需根据访问控制符设定的成员权限就可以轻松判定哪些代码是可以被外部成员访问,哪些是内部机制成员。从而大大提高代码的安全性。2、封装让代码分解成相对独立的单元。 封装让代码分成一个个相对独立的单元,易于代码的修改和替换,最小的单元是单个的类。一般的单元都有数个类来共同完成一项任务。代码单元又称为模块,在实际编程中往往就是一个个的包。而一个软件就是由若干个代码单元共同构成的。每个单元都有向外公开的共有成员也有不对外公开的私有成员。封装的好处3、封装可以大大降低软件开发的复杂程度 通过封装,我们把代码的实现细节隐藏起来,让软件的复杂程度大大降低。只需要在软件设计之初打好框架、划分好各个模块,然后才是具体的各个模块的代码编写。设计软件开发时只需要考虑各个模块间的内在逻辑关系就可以了,不需要细化到每个流程的具体实现。模块之间的依赖程度大大降低,便于团队合作开发大型项目。这才是封装思想在面向对象编程中的最主要的存在意义。AS封装的几个层次包外public包 internal类 private 包外类(代码单元的私有类)package(包) 包是划分模块的重要手段也是划分访问控制的重要分界线。在逻辑上,通常一个包内的所有类都有其内部联系,共同为外界提供一种或多个服务。比如系统的flash.display包内的所有类都是显示类,用来处理flash中的显示对象比如MovieClip、Sprite、shape、loader等。全饰名称:全饰名称是指加上package包名之后的类名,flash编译器只会对全饰名称修饰的类做出编译。比如:MovieClip类的全饰名称是:flash.display.MovieClip 对应的文件是:flash文件夹下的display文件夹下的MovieClip类。Package 的命名必须要用小写英文字母命名。类成员访问控制祥解:在AS3中访问控制符有四个:public private protected internal 另外,flash还提供了更强大的namespace自定义命名空间,属于高级编程技巧,在这里我们不讨论。有兴趣的同学可以自己翻阅资料。internalinternal是默认的访问控制符,被internal修饰的属性和方法只有同一包内的其他类才可以访问该属性或方法。package code public class ClassB public function ClassB() var myClass:ClassA=new ClassA(); myClass.sayHello(); public function sayHello() trace(I am public from ClassB); package code public class ClassA internal function sayHello() trace(I am internal from ClassA); package import flash.display.Sprite;import code.ClassAimport code.ClassBpublic class Samples extends Sprite public function Samples() var fooA:ClassA=new ClassA();var fooB:ClassB=new ClassB();fooB.sayHello() public public 是完全公开的访问控制符。使用public 修饰的类成员相当于宣告在任何地方被任何类都可以访问到。见上例。privatepackage import flash.display.Sprite; import code.ClassA public class Samples extends Sprite public function Samples() var array:Array=1,2,3 var fooA:ClassA=new ClassA(array); /fooA.myArray.push(s) array.push(wd) fooA.getArray().push(35) trace(fooA.getArray() private是最严格的访问控制符。使用public 修饰的类成员称为私有成员,只有类体内才可以访问。其他类体外的一切情况都不可以访问。即使是同一包中的其他类或者是继承自该类的子类也不可以访问。package code public class ClassA private var myArray:Array;public function ClassA(array:Array) myArray=array;public function getArray():Array return myArray; protected 该访问控制符主要和继承相关,这里不举例。Protected修饰的类成员只能被当前类和当前类的子类访问,如果当前类没有子类继承它,那么protected和private权限相同,可以互换。需要强调的是,protected修饰的成员和继承相关,与是不是在同一个包无关。也就是说假如当前类和它的子类不在同一个包中,子类仍然可以跨包访问被protected修饰过的超类成员。get /set 方法 通过get或set方法可以定义像访问属性一样方便的功能更完善的方法。可以通过该方法保护私有属性。可以实现只读、只写属性。看下例:package public class Jony private var _n:String;public var gnum:int;public var snum:int;public function Jony() public function get names() gnum+; trace(names属性被访问了:+gnum+次了!) return _n;public function set names(n) snum+; _n=n; trace(names属性被设置了:+snum+次了!)package import flash.display.Sprite; public class Samples extends Sprite public function Samples() var jony:Jony=new Jony() s=haha trace(s) 关于类的访问控制 类也有访问控制,类的访问控制只有public 和包内访问。包内访问是指在class关键字前没有访问控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论