Return to Video

物件方法程式編輯(視頻版)

  • 0:00 - 0:03
    在前一個講談中,我們學到如何製作物件類型,
  • 0:03 - 0:06
    來代表我們兩種類似「溫斯頓」的物件。
  • 0:06 - 0:09
    然後藉由建構子,初始化它們。
  • 0:09 - 0:13
    一個物件類型,不只需要與其屬性相關聯。
  • 0:13 - 0:16
    它也可以與函數相關聯。
  • 0:16 - 0:20
    想想世界上所有的物件類型,例如,我們人類。
  • 0:20 - 0:22
    我們都有身高和年齡,
  • 0:22 - 0:26
    也有可以做的事情,例如,
    睡覺,吃飯,和編輯程式。
  • 0:26 - 0:31
    我們需要能將這些函數與其物件類型相關聯。
  • 0:31 - 0:34
    在此程式裡,我們將接續上次的編輯,
  • 0:34 - 0:39
    我們這裡已有了「繪製溫斯頓」的函數,
    用來呼叫兩種「溫斯頓」物件。
  • 0:39 - 0:45
    如果能將它附帶於溫斯頓物件類型裡,
    不就更簡便了?
  • 0:45 - 0:48
    我們是可以這麼做,而且很容易。
  • 0:49 - 0:52
    所以在建構子裡,我們要編寫「溫斯頓 」,
  • 0:52 - 0:56
    大寫的「W 」以及「 點」、「原型」。
  • 0:56 - 0:59
    這「原型」是一個新詞,你可能沒見過。
  • 0:59 - 1:06
    「原型」是物件的屬性,可附帶函數。
  • 1:06 - 1:10
    這將表示,每個物件的實例,
  • 1:10 - 1:13
    也將附帶這些函數。
  • 1:13 - 1:18
    所以我們可以用「點」、「原型」、「點」,
    然後「函數的名稱」。
  • 1:18 - 1:24
    所以我們用「繪製等於」,然後就可以
    把「繪製溫斯頓」代碼,
  • 1:24 - 1:28
    我們就把它放置到這裡面。
  • 1:28 - 1:33
    好了。我們目前完成的是我們附帶了繪製函數
  • 1:33 - 1:35
    於我們的溫斯頓原型。
  • 1:35 - 1:40
    這意味著,我們應該能呼叫「繪製()」
    於任一種類似「溫斯頓」的物件。
  • 1:40 - 1:45
    因此,我們應該能呼叫「繪製()」
    於「溫斯頓少年」或「溫斯頓成人」。
  • 1:45 - 1:50
    當我們有了這樣能夠
    呼叫物件的函數,
  • 1:50 - 1:55
    我們稱它為「方法」。所以,
    從此你會聽我說「方法」這名詞。
  • 1:55 - 1:58
    我們就稱此為「繪製方法」。好了。
  • 1:58 - 2:04
    現在我們來刪除這個,還有刪除這個,
    然後看看我們是否能呼叫「繪製()」?
  • 2:04 - 2:07
    「溫斯頓少年」、「點」、「繪製()」。
  • 2:07 - 2:08
    好的,我們有個錯誤。
  • 2:08 - 2:14
    這裡有明顯的錯誤。
    它說,「溫斯頓物件沒被定義」。
  • 2:14 - 2:18
    問題是,先前我們傳遞
    這個參數到「繪製溫斯頓」裡,
  • 2:18 - 2:23
    是一個溫斯頓物件,但現在我們傳遞不了。
  • 2:23 - 2:27
    所以,我們可以改變這個來傳遞,
    然後,讓我們看看,
  • 2:27 - 2:30
    在這裡會通過甚麼?
    我們得通過「溫斯頓少年」。
  • 2:30 - 2:34
    好了,解決了,但那似乎滿滑稽的。
  • 2:34 - 2:38
    我已經在物件本身呼叫繪製。
  • 2:38 - 2:42
    我應該不必還得另外再傳遞到物件裡。
  • 2:42 - 2:44
    這似乎是多餘的。
  • 2:44 - 2:46
    沒錯,我們應該不必這麼做。
  • 2:46 - 2:48
    所以,讓我們把這裡刪除。現在想想,
  • 2:48 - 2:52
    我們如果在物件裡,我們能使用甚麼
  • 2:52 - 2:54
    來取讀物件的屬性呢?
  • 2:54 - 2:58
    你可以看看我們的建構子,
    然後想起那個特殊的關鍵字,「此」,
  • 2:58 - 3:04
    然後想到,啊,如果我們改變這個為「此」!
  • 3:04 - 3:08
    讓我們將「溫斯頓物件」改寫為「此」。
  • 3:08 - 3:13
    因為現在我們在這物件裡,
    所以物件正在評估這函數,
  • 3:13 - 3:17
    好讓「此」能用來引用當前的物件。
  • 3:17 - 3:20
    這樣,我們只要用「此」,我們就能讀取,
  • 3:20 - 3:23
    當前物件的所有屬性。
  • 3:23 - 3:27
    這是完全有效的,看到了嗎?是不是很酷?
  • 3:27 - 3:32
    我們現在可以用「溫斯頓成人」、
    「點」、「繪製()」。
  • 3:32 - 3:35
    成功!它將能讀取「溫斯頓成人」的屬性,
  • 3:35 - 3:38
    因為那是被呼叫的物件。
  • 3:38 - 3:41
    所以,很酷的是,這個「此」關鍵字。
  • 3:41 - 3:44
    即使,在說時會令人有點混淆。
  • 3:46 - 3:49
    好了。這還滿有趣的。
    接下來,我們再添加一個方法。
  • 3:49 - 3:52
    那麼,溫斯頓還會做什麼?
  • 3:52 - 3:56
    也許他會說話。所以我們來製作一個
    「溫斯頓點原型點講話」。
  • 3:56 - 4:01
    這樣我們就可附帶許多的方法於原型裡。
  • 4:01 - 4:05
    所以我們來說,「我是溫斯頓!」
  • 4:05 - 4:12
    然後,我們再用「此」、「點X+ 20」,
    和有「此」、「點Y + 150」。
  • 4:13 - 4:16
    然後,你知道的,什麼都不會發生。
  • 4:16 - 4:20
    那是因為我還沒實際的呼叫那個函數。
  • 4:20 - 4:24
    我們讓這少年˙講話。
    「溫斯頓少年點講話()」。青少年老愛說話。
  • 4:24 - 4:30
    好的,「我是溫斯頓」。成功了!
    然後用「溫斯頓成人點講話()」。
  • 4:30 - 4:32
    成功了!
  • 4:32 - 4:36
    現在我們的溫斯頓物件類型,有了它的屬性:
  • 4:36 - 4:41
    暱稱、年齡、X、Y;
    而且它有了功能:行為、方法;
  • 4:41 - 4:44
    行為的不同取決於其屬性。
  • 4:44 - 4:48
    我們能創建許多個我們想要的溫斯頓實例,
  • 4:48 - 4:51
    然後以其中一種方法就能呼叫它。
  • 4:51 - 4:53
    這很酷,是吧?
Title:
物件方法程式編輯(視頻版)
Description:

這是我們在編碼互動講談裡所抓取的視頻屏幕,好讓字幕和翻譯更方便。於以下的網子,能更清楚的觀賞我們的講談:https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
04:54

Chinese, Traditional subtitles

Revisions