佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1133|回复: 1

[教程]Class结构

[复制链接]
发表于 24-12-2004 05:47 PM | 显示全部楼层 |阅读模式

说实在的这篇教程我也不知道要怎么详细的写, 因为要详细解释的话也太长了.... 所以我都会快速的以简短的例子说明, 至于新手们可能会有很多不明白... 希望新手能够学会掌握了基本的技巧再来翻阅这篇教程就自然容易理解.... 至于什么是private, public, protected等这些基本的说明还是请你们看看基础的书籍教程或网络上的说明吧, 主题也写明了是"结构"上的教程



作者 : Super-Tomato(原贴子)

1. 最基本的Class定义方面我不多说了, 就举个例子直接开始:
class Flash8 {
private var user:String; //定义变量
private var pass:String;
private var age:Number;
public function Flash8(x:String, y:String) { //class的结构函数
user = x;
pass = y;
trace("用户名 = "+user+", 密码 = "+pass);
}
public function setAge(x:Number):Void { //class中的定义函数
age = x;
}
public function getAge() {
trace(user+" is "+age+" years old." );
}
}

--------------- 在 Flash 的代码 ------------
var a = new Flash8("Super-Tomato", "123456" );
a.setAge(24);
a.getAge();
//得到的输出结果是:
//用户名 = Super-Tomato, 密码 = 123456
//Super-Tomato is 24 years old.






2. 再来是Inheritance继承并且使用Overriding, 引用之前的Flash8类,作为SuperClass class
Flash8 {
private var user:String; //定义变量
private var pass:String;
private var age:Number;
public function Flash8(x:String, y:String) { //class的结构函数
user = x;
pass = y;
trace("用户名 = "+user+", 密码 = "+pass);
}
public function setAge(x:Number):Void { //class中的定义函数
age = x;
}
public function getAge() {
trace(user+" is "+age+" years old." );
}
}

-------------- Board1类 -------------------
class Board1 extends Flash8 { //继承都必定要使用extends来指定所继承的SuperClass
public function Board1() {
trace("这个是继承类SubClass, SuperClass还是会被执行" );
}
public function getAge() {
trace("这里使用了Overriding" );
}
}

--------------- 在Flash的代码 --------------
var a = new Board1();
a.getAge();
//输出的结果为 :
//用户名 = undefined, 密码 = undefined
//这个是继承类SubClass, SuperClass还是会被执行
//这里使用了Overwritten



从这里可以知道, Flash8类还是有本执行.....当中的继承之间都同时出现了getAge()函数, 到底要用哪个getAge()才是对的呢??
答案是Board1的getAge(), 原因是因为他已经derived(继承)了Flash8, 也就是说Flash8的getAge()被Override(可以说被取代)了 AOL之前也有写过这样的例子: http://www2.flash8.net/teach/1435.htm, http://www2.flash8.net/teach/599.htm





3. Polymorphism (多形) 其实Polymorphism和Inheritance一样是被override, 但polymorphism则是多个继承, 接下来的例子当中我会使用到super和调用SuperClass的方法:
class Flash8 {
private var user:String;
private var pass:String;
private var age:Number;
private var str:String;
public function Flash8(x:String, y:String) {
user = x;
pass = y;
trace("用户名 = "+user+", 密码 = "+pass);
}
public function setAge(x:Number):Void {
age = x;
}
public function getAge() {
str = user+" is "+age+" years old.";
return str;
}
}

----------- Board1 类 -------------------
class Board1 extends Flash8 {
public function Board1(a:String, b:String) {
super(a, b);
}
public function getString() {
str = "In Board1 "+getAge();
trace(str);
}
}

----------- Board2 类 -------------------
class Board2 extends Flash8 {
private var str:String;
public function Board2(a:String, b:String) {
super(a, b);
}
public function getString() {
str = "In Board2 "+getAge();
trace(str);
}
}

----------- 在 Flash 的代码 -------------------
var a = new Board1("Super-Tomato", "123456" );
a.setAge(24);
a.getString();
var b = new Board2("Tomato", "12345" );
b.setAge(24);
b.getString();

//输出结果为 :
//用户名 = Super-Tomato, 密码 = 123456
//In Board1 Super-Tomato is 24 years old.
//用户名 = Tomato, 密码 = 12345
//In Board2 Tomato is 24 years old.






4. Implementing 以上方法大致上会使用的方法都说完了, 而Implementing方面的例子, AS区版主holybozo在之前已经使用过了, 所以也有例子可以参考..我在这里就不多说了
但在JAVA当中还有一个叫Overloading的方法, 但在AS2.0的class中暂时无法使用....什么是Overloading呢?? 这里也举个例子吧
class SuperClass {
private var Name:String;
private var Price:Number;
public function setItem(a:String) {
Name = a;
}
public function setItem(a:String, b:Number) {
Name = a;
Price = b;
}
}




看到了吗?? 当中有两个函数名字是一样的... 主要只是在于参数不同而决定使用的函数
好啦.... Class的用法我已经粗略的介绍过了, 当然你们还是需要去看看详细的说明和更多的例子以掌握好Class的应用...这样不只对Flash有帮助, 而且还可以跳出Flash的编程范围转向其他语言的结合


[ Last edited by super-tomato on 24-12-2004 at 05:51 PM ]
回复

使用道具 举报


ADVERTISEMENT

发表于 25-12-2004 12:57 AM | 显示全部楼层
支持教学。加分,以后多分享哦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 15-5-2024 05:41 AM , Processed in 0.054675 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表