趣味教程:从女娲造人谈类、属性、方法及实例
前言:相信大家都聽說過女媧造人的故事,不過細節可能不會太清楚,我現在略述如下,您可要仔細聽哦,這和我們今天要聊的主題有莫大的關系呀。
女媧是一個人身龍尾的女神。盤古開天辟地以后,也就在天地間到處游歷。她雖然是神,可是也會寂寞的,望著平靜的水面里自己美麗的倒影不勝唏噓。于是她便決定按照自己的形貌來捏泥人。女媧心靈手巧,不一會兒就捏好了好多的泥人。這些泥人幾乎和她一樣,只不過她給他們做了與兩手相配的雙腿,來代替龍的尾巴。女媧朝著那些小泥人吹口氣,那些小泥人便被灌注了活力,“活”了起來,變成了一群能直立行走、能言會語、聰明靈巧的小東西,女媧稱他們為“人”。女媧在其中一些人身上注入了陽氣——自然界一種好斗的雄性要素,于是他們就成了男人;而在另外一些人身上,她又注入了陰氣——自然界一種柔順的雌性素,于是她們便成了女人。 女媧想讓人們遍布廣闊的大地,但她累了,做得也太慢了。于是,她想出一條捷徑。她把一根繩子放進河底的淤泥里轉動著,直到繩的下端整個兒裹上一層土。接著,她提起繩子向地面上一揮,凡是有泥點降落的地方,那些泥點就變成了一個個小人。女媧就這樣創造了布滿大地的人們。
這個故事可謂是蘊涵了極深刻的程序語法規則,大家看完我下面的分析后,一定會相信故事的作者沒準是遠古時代的程序員呢!
<代碼看起來很長,是我加了詳細的注釋的緣故>
1、類:如果女媧屬于一個類的話,可以稱之為"神"。代碼表示為:
--神.as開始--
--神.as結束--
到這里我們的"造神運動"就告一階段了,該看看我們的神的威力啦!
--女媧造人.fla開始--
//在第一楨上寫代碼: var 女媧=new 神("善","女媧","人身蛇尾","女"); //new:生成實例的關鍵字,它先創建一個初始時匿名的新對象,再用構造函數設置新對象的特性, //最后返回新對象的內存地址。在這里新誕生的'神'的內存地址賦給了'女媧'變量。 trace(女媧.姓名+"是一位"+女媧.形體+女媧.性別+神.類別); //調用女媧的'get 姓名'方法,返回'偉大的神女媧'。對返回的屬性值進行必要的控制,是隱式獲取屬性的一個優勢。 //比如,你的老板叫張三,卻常被稱為'張總',這也是經過必要的控制之后得到的結果。 //'張三'這個名字只有他的自己人才使用哦!所以說生活中有很多事情也可用'私有屬性'來解釋的~ trace("她是"+女媧.善惡+神.類別); //直接返回女媧的善惡屬性值。 trace("一天,她覺得"); 女媧.寂寞(); trace("于是,她開始"); 女媧.創造("人");--女媧造人.fla結束--
現在測試一下吧,看看會產生什么驚天動地的大事吧!
--測試影片開始--
偉大的神女媧是一位神奇的人身蛇尾女神
她是善神
一天,她覺得
"自己好孤單啊,有個人陪陪多好啊!"
于是,她開始
捏泥人...
一個泥人制作完畢!
吹口氣...
泥人學會直立行走!
泥人學會語言!
泥人學會思考!
泥人性別是男!
泥人具備了靈魂!
一個人誕生了!
--測試影片結束--
呵呵,到此為止,我們的女媧造人的故事就講述了一半了,接下來就該女媧如何用繩子甩泥點造人啦(這的確比一個一個手工捏要利索多了),也就是類的繼承。希望不會讓大家等太久哦:)
前言:在上篇中談到女媧不甘寂寞,用泥土捏出了一個個會走動、具靈氣的"人",可是忘了交代一下"人" 的才能到底如何。在女媧開始大批量造人之前先給我們"人"個舞臺,讓他展現一下自己的才能吧!
--女媧造人.fla 開始--
var 女媧:神=new 神("善","女媧","人身蛇尾","女"); trace(女媧.姓名+"是一位"+女媧.形體+女媧.性別+神.類別); trace("她是"+女媧.善惡+神.類別); trace("一天,她覺得"); 女媧.寂寞(); trace("于是,她開始"); var 原始人:Object=女媧.創造("人"); //將創造出來的"人"賦值給變量'原始人',以后就可以通過'原始人'訪問他的屬性與方法。 trace("----原始人開始展示自己的才能----"); trace("原始人是"+原始人.性別+原始人.類別); trace("原始人的形體是"+原始人.形體); trace("原始人會直立行走,現在他(她)在:"); 原始人.直立行走(); trace("原始人能言會語,現在他(她)在:"); 原始人.能言會語(); trace("原始人聰明靈巧,現在他(她)在:"); 原始人.聰明靈巧()?
--女媧造人.fla 結束--
我們人的表現如何呢?現在測試一下:
--女媧造人.fla 測試開始--
偉大的神女媧是一位神奇的人身蛇尾女神
她是善神
一天,她覺得
"我好孤單啊,有個人陪陪我多好啊!"
于是,她開始
捏泥人...
一個泥人制作完畢!
吹口氣...
泥人學會直立行走!
泥人學會語言!
泥人學會思考!
泥人性別是女!
泥人具備了靈魂!
一個人誕生了!
----原始人開始展示自己的才能----
原始人是女人
原始人的形體是人身人腿
原始人會直立行走,現在他(她)在:
打架摔交中...
原始人能言會語,現在他(她)在:
談情說愛中...
原始人聰明靈巧,現在他(她)在:
坑蒙拐騙中...
--女媧造人.fla 測試結束--
看到測試結果,你的感受如何呢?這個這個嘛,還是'人之初,性本惡'吧?
廢話少說,言歸正傳。話說女媧想讓人們遍布廣闊的大地,但象她這樣一個一個捏制下去希望實在渺茫啊。而且我們也看到了,其實每個泥人的樣子雖然各不相同,但靈魂卻是相似的,都是女媧的一口氣使然。如果每個人都需要從女媧那里來那么一口,不把女媧累死也得元氣大傷吧!那么女媧該怎么辦呢?傳說里說女媧拿了根繩子甩啊甩的就造出了很多人,看來得從這根'繩'子著手了.
這根繩子如此不一般,我認為是女媧把造人的模版傾注其中的結果。傳說里又說,女媧是'按照自己的行貌'造的人,可以肯定'人'一定是從神那里繼承了不少的特性吧。
--人.as開始--
class 人 extends 神 { //extends:定義類與類之間繼承關系的關鍵字,子類對父類的特性可以保留或揚棄。static var 類別:String = "人";static var 所屬:Object = 神;//看到沒,人是歸神所管的哦static var 氣:Array = ["陽", "陰"];static function 設置性別():String {var 隨即氣 = 人.氣[Math.floor(Math.random()*2)];if (隨即氣 == "陰") {return "女";} else if (隨即氣 == "陽") {return "男";}}public function set 形體(x:String):Void {//畢竟人和神的形體有很大的不同,神的形體千變萬化,//人的形體卻大體是相似的,所以子類重寫了父類的 'set 形體()'方法.//x:形體的狀況,如是怎樣的身材等等if (x == undefined) {x = "平常";}//如果沒有提供'形體'的詳細描述,那么用默認值'平常'。__形體 = x+"人體";}public function get 形體():String{//這個方法有點奇怪,本來應該直接繼承就可以了,但卻不得不再寫一遍,原因不明。或者set 與 get 要配對出現?return __形體;}function 人(x) {//人的誕生無法和神相比啦,重寫構造函數//x:形體//與神相比,人的構造函數只有'形體'一項參數,因為人的善惡跟后來的成長過程有關,//性別由自然規則來定,姓名是后來由別人給命名的...只有身體是與天俱來的//善惡=undefined 這里寫出來,是提醒大家善惡現在其實是undefined的 //姓名=undefined 形體 = x;性別 = 人.設置性別();//調用類方法來初始化性別trace("人誕生了!");}//下面的是繼承來的方法public function 寂寞():Void {//寂寞者,人神皆然。不過'人'對'神'的寂寞有所拓展super.寂寞();//super:指向父類對象的關鍵字,因為'人'與神的寂寞有相同的地方,所以這里先調用'神'的‘寂寞’方法。trace("哪怕是陪我聊聊天也行哦!");//神會把'寂寞'轉化為'創造',人卻把'寂寞'轉化為'有聊'~~}public function 創造(o:Object):Object {//人是沒有神那么偉大的創造力...重寫'創造'方法if (o == "火") {var o = new Object();o.名稱 = "火";o.烤 = function(oo:Object) {trace(oo+"烤熟了!");};trace("發明鉆木取火!");return o;}//其他的創造能力...略}//public function 捏泥人()... 人和神的 ‘捏泥人’沒啥區別,完全繼承之public function 吹口氣(o:Object) {//由私有方法成為公有方法//唉,一般來說子類對父類的功能都是有所拓展或增強的,唯獨由神到人有點特別呀,//拓展的只是些皮毛無聊的小功能,象這‘吹口氣’的大本領就沒繼承來!要是吹口氣吹出銀子來...if (o == undefined) {//如果無東西可吹trace("哎,這覺睡得好長啊");//等于是打個哈欠吧} else if (o == " 蠟燭") {trace("蠟燭滅了");//吹吹蠟燭~} else if (o == this) {//this:表示對象自身的關鍵字。//如果吹的對象是自己trace("哪里哪里,我也是略懂一二...你有什么要請教的?");//唉,我也難免吹吹自己的~} else if (o instanceof 人.所屬) {//如果吹的對象是人類的主宰的話trace("爹親娘親沒有"+o.姓名+"親!");//得 ,這又是在拍了~}}//下面是人自己的方法public function 直立行走() {trace("打架摔交中...");}public function 能言會語() {trace("談情說愛中...");}public function 聰明靈巧() {trace("坑蒙拐騙中...");} }//--人.as結束--
現在"造人運動"也告一段落了,讓我們看看收效如何吧:
--女媧造人.fla--
(在原代碼后附加)
--女媧造人.fla 結束--
如果你想要看看這位遠古人的表現如何,不妨自己測試。到此為止,我們的故事就快講完了。女媧現在造人就非常簡單了,只需要"new 人()"就可以了,再不用捏個泥人吹口氣了。如果精神充沛的話就"new 人('健康的')",如果體力不支的話就"new 人('軟弱的')"。如果你了解Action 1.0語法的繼承機制的話,一定知道類中的實例方法是寫在類的"prototype"(即原型)上的,這樣可以實現由類創建的實例共享相同的方法。在我們剛才創建的類中,由"public"或"private"關鍵字修飾的方法其實也是寫在"prototype"上的。所以說,現在女媧不再需要在每個"人"身上都定義一遍"方法",也就是對每個人都"吹口氣"了。
轉載于:https://www.cnblogs.com/savageworld/archive/2006/08/11/474020.html
總結
以上是生活随笔為你收集整理的趣味教程:从女娲造人谈类、属性、方法及实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TreeView 实现单选与多选!
- 下一篇: 创业,程序员心中说不出的痛