現在完成式

句型:

has/have + 過去分詞

例句:

  • My sister has seen that movie many times. (那部電影我姊姊已看了很多遍)
  • I have not seen that movie many times. (那部電影我沒有看很多遍)
  • Have you seen that movie many times? (那部電影你有看很多遍嗎?)

用法之一:發生在現在之前某一不確定時間的動作

我們使用現在完成式來表示在現在之前某一不確定時間所發生的動作。確切時間並不重要。現在完成式不可跟 yesterday, one year ago, last week, when I was a child, when I lived in Japan, at that moment, that day, one day 等時間明確的字、片語或子句連用。相反地,現在完成式可以跟 ever, never, once, many times, several times, before, so far, already, yet 等時間不明確的字或片語連用。

例句:

  • We have seen that movie ten times. (那部電影我們已經看過十遍)
  • I think I have met him once before. (我想我以前見過他一次)
  • There have been many earthquakes in Japan. (日本已發生許多地震)
  • People have traveled to the moon. (人類已去過月球)
  • Cindy has never been to South Korea. (辛蒂從未去過南韓)
  • These students haven’t had lunch yet. (這些學生尚未吃午餐)
  • Nobody has ever climbed that mountain. (沒有人攀登那座山)
  • Has Nick arrived yet? (尼克到了嗎?)

現在完成式的用法重點

「不確定時間」的概念可能讓許多英文學習者感到非常困惑。事實上,「不確定時間」體現於現在完成式下列的應用:

應用之一:經驗

我們可以使用現在完成式來說明經驗。這就好像說「我有…經驗」。我們亦可使用這種時式來表示我們從未有過某種經驗。現在完成式不可用來表示特定的事件。

例句:

  • I have been to Japan. (我去過日本) - 本句是指我有到日本的經驗,可能去過一次或好幾次。
  • I have been to Japan three times. (我去過日本三次) - 我們可在句末加上次數。
  • I have never been to Japan. (我從未去過日本) - 本句是指我沒有去過日本的經驗。
  • I think I have seen that movie before. (我想我以前看過那部電影)
  • Mary has never traveled by train. (瑪麗從未搭火車旅行)
  • Joan has studied two foreign languages. (瓊安已學了兩種外語)
  • A: Have you ever met him? (你曾見過他嗎?)
    B: No, I have not met him. (沒有,我沒見過他)

應用之二:隨時間的改變

我們經常使用現在完成式來說明在一段時間內發生的變化。

例句:

  • You have grown since the last time I saw you. (自上次我見到你以來,你已長大了)
  • The government has become more interested in arts education. (政府已變得對藝術教育更有興趣)
  • Korean has become one of the most popular courses at the university since the Asian studies program was established. (自亞洲研究課程設立以來,韓文已成為本大學最受喜愛的課程之一)
  • My English has really improved since I moved to Australia. (自我搬到澳洲以來,我的英文確實有所進步)

應用之三:成就

我們經常使用現在完成式來說明個人和人類的成就,但不能提到特定時間。

例句:

  • Man has walked on the Moon. (人類已在月球漫步)
  • My son has learned how to read. (我兒子已學會閱讀)
  • Doctors have cured many deadly diseases. (醫生已治癒許多致命性疾病)
  • Scientists have split the atom. (科學家已將原子分離)

應用之四:預期的動作沒有發生

我們經常使用現在完成式來說明我們預期的動作沒有發生,而使用現在完成式是表示我們仍在等待該動作的發生。

例句:

  • Jack has not finished his homework yet. (傑克尚未完成他的家庭作業)
  • Lilly hasn’t mastered Japanese, but she can communicate. (莉莉並不精通日語,但可以溝通)
  • Stephen has still not arrived. (史蒂芬還沒到)
  • The rain hasn’t stopped. (雨沒停)

應用之五:不同時間的多個動作

我們也使用現在完成式來說明在過去不同時間發生的數個不同的動作,而使用現在完成式是表示過程還沒結束,可能發生更多的動作。

例句:

  • The army has attacked that city five times. (軍隊已五度攻打該城市)
  • I have had five quizzes and four tests so far this semester. (本學期迄今我已經考了五次小考和四次測驗)
  • We have had many major problems while working on this project. (我們在進行這項計畫時遭遇許多重大問題)
  • Susan has talked to several specialists about her problem, but nobody knows why she is sick. (蘇珊已跟數名專家談過她的問題,但沒有人知道她生病的原因)

與現在完成式連用的時間詞

當我們使用現在完成式時,那就意味在現在之前的某個時間點,我們的生活中發生了某事。請記住:動作發生的確切時間並不重要。

有時當我們想要限制經驗發生的時間時,我們可以使用下列時間詞來達成目的:in the last week, in the last year, this week, this month, so far, up to now 等等。

例句:

  • Have you been to Singapore in the last year? (過去一年來你有去過新加坡嗎?)
  • I have seen that movie six times in the last month. (過去一個月來我已看了那部電影六遍)
  • They have had three tests in the last week. (過去一週來他們已考了三次測驗)
  • Cindy graduated from university less than three years ago. She has worked for three different companies so far. (辛蒂在不到三年前大學畢業。截至目前她已換了三家不同的公司)
  • My car has broken down three times this week. (我的車子這個禮拜已故障三次)

注意:

“last year” (去年) 和 “in the last year” (過去一年,即今天之前的 365 天) 意義上是截然不同的。last year 被視為特定時間,須用在簡單過去式中,而 in the last year 並非特定時間,所以須與現在完成式連用。至於 “last month” (上個月) 和 “in the last month” (過去一個月) 以及 “last week” (上週) 和 “in the last week” (過去一週) 等,其意義亦作同樣解讀。

例句:

  • I went to Canada last year. (去年我去加拿大) - 我是在去年去加拿大
  • I have been to Canada in the last year. (過去一年來我已去過加拿大) - 在今天之前的 365 天期間的某個時間點,我至少去過加拿大一次。

用法之二:從過去持續到現在的時間 (非進行式動詞)

對於非進行式動詞及若干混合動詞的非進行式用法,我們使用現在完成式來表示某事發生在過去且一直持續到現在。for ten minutes, for two weeks, since Thursday 等等,都是可與現在完成式連用的時間副詞片語。

例句:

  • My grandmother has had a cold for two weeks. (我奶奶已感冒兩個禮拜)
  • Amy has been in Taipei for six months. (艾美已在台北六個月)
  • John has loved chocolate since he was a little boy. (約翰從小就喜歡巧克力)

雖然上面的現在完成式用法通常僅限於非進行式動詞及若干混合動詞的非進行式用法,但 live, work, teach 和 study 等普通動詞有時也這樣用。

副詞的位置

always, usually, only, never, ever, still, just 等副詞通常位在助動詞 have/has 的後面,即位在 have/has 和過去分詞之間。

例句:

  • They have only seen that movie one time. (他們只看過那部電影一遍)
  • Have they only seen that movie one time? (他們只看過那部電影一遍嗎?)
  • My sister has never seen that movie. (我姊姊從未看過那部電影)

主動態/被動態

例句:

  • Many tourists have visited that museum. (許多遊客已參觀了那座博物館) - 主動態
  • That museum has been visited by many tourists. (那座博物館已被許多遊客參觀過) - 被動態

Q:can 和 able to 以及 can’t 和 unable to 的用法有何不同呢?

A:Can 和 be able to 都是表示能力,意為「能,會」,它們有時是同義詞,可以互換,但有時卻不行。同樣地,它們的否定詞 can’t 和 am not/aren’t/isn’t able to 或 am/are/is unable to 也是有時可以互換,有時則不行。例如:

  • I can drive. (我會開車)
    = I am able to drive.
  • I can’t drive. (我不會開車)
    = I am not able to drive.
    = I am unable to drive.

Can 的過去式 could 係表示過去能做某事或會做某事,而 could 的否定詞 couldn’t 則表示過去不會做某事,即缺乏做某事的能力。同樣地,could 和 was/were able to 以及 couldn’t 和 wasn’t/weren’t able to 或 was/were unable to 亦是有時可以互換,有時則不行。例如:

  • I could swim. (以前我會游泳)
    = I was able to swim.
  • I couldn’t swim. (以前我不會游泳)
    = I wasn’t able to swim.
    = I was unable to swim.

既然 can 和 be able to 的意思相同,那麼該使用那一個比較適當呢? 在非正式場合,尤其在口說英語中,一般都使用 can (亦適用於 can’t, could 和 couldn’t;以下的敘述亦同),而 be able to (亦適用於 am/are/is/was/were able to, am not/aren’t/isn’t/wasn’t/weren’t able to 或 am/are/is/was/were unable to;以下的敘述亦同) 則用在比較正式的場合,不是很適合用於日常生活的情況中。

從上述可知,can 和 be able to 可以互換的情況是發生在現在式和過去式的句子中。若是未來式、現在完成式和過去完成式,那麼它們就不能互換了,因為 can 在這些時式中並非表示能力;所以,在未來式、現在完成式和過去完成式中僅能使用 be able to。例如:

  • He’ll be able to speak really good English by the end of the year. (到了年底,他將會說一口真的很好的英文)
  • My six-year-old son has been able to read for two years. (我六歲兒子的閱讀能力已持續兩年了)
  • I thought he had been able to swim. (我認為他一定會游泳)

最後值得一提的是,unable to 比 not able to 來得正式 (formal) 一些。

Q:I never knew it. 和 I’ve never known it. 這兩句的意思有何不同?

A:首先來看 I never knew it.,這句有兩個意思。由於過去式是在表示動作或狀態發生在過去、結束在過去,所以 I never knew it. 可能被認為主詞所指的那個人已不在人世,因此他或她再也不知道或永遠都不知道那件事了。譬如說,She never married. 這句十之八九會被認為她已過世,所以我們才說「她從未結過婚」,否則即使七老八十都不能被排除結婚的可能性。不過,”I never knew” 也是一句現在常用的口語,意為「我以前一直不知道」,如 I never knew that John was married. (我以前一直不知道約翰結婚了) - 這是說,我在說話當時才知道約翰已經結婚了,以前並不知道。再舉一例:

  • A:Vivian’s got a 20-year son. (薇薇安有個 20 歲大的兒子)
  • B:Oh, I never knew! (哦,我以前一直不知道)

同樣地,這是我第一次知道薇薇安有個這麼大的兒子,以前並不知道,到現在才知道。

至於 I’ve never known it.,這是現在完成式與 never 連用的句型。現在完成式是在表示動作或狀態發生在過去,一直持續到現在或到現在依然存在。所以這句的意思是說,我一生中或有生以來直到現在都不知道、不瞭解或不懂得某件事。例如:

  • I’ve never had any problems with my teeth. (我的牙齒從未發生任何毛病)
  • I’ve never known how to do algebra. (我一直以來都不會代數)
  • I’ve never understood why you moved to Mainland China. (我一直不瞭解你搬到中國大陸的原因)

這三句都是說,從出生開始或過去某個時間點開始一直到現在,我都沒有過某種經驗、不知道或不瞭解某件事,即使在說話的當時亦然。

值得注意的是,由於 have, know 和 understand 都是狀態動詞 (static verbs),而一般通常使用簡單現在式來敘述目前存在的狀態。所以,下面三句比上面三句更為常見:

  • I don’t have any problems with my teeth.
  • I don’t know how to do algebra.
  • I don’t understand why you moved to Mainland China.

Q:had better 後接進行式和完成式的意義為何?

A:had better 後接動詞的進行式 (had better + be + V-ing),係表示最好馬上做某事;若接完成式動詞 (had better + have + P.P.),則表示本該做某事但並未去做。例如:

  • I think I’d better be/get going. (我想我該走了)
  • We’d better be getting our clothes ready. (你最好馬上把衣服準備好)
  • We had better be watching TV. (我們最好馬上就看電視)
  • We had better be starting back now. (我們最好現在就動身回去)
  • You had better have done it. (你本來應該把那件事做好的) — 但實際上卻沒有做。
  • You had better have stayed with us. (你本來應該跟我們待在一起的) — 但實際上卻沒有。
  • You had better have stayed here. (你本來應該待在這裡的) — 但實際上卻沒有。

Q:一般文法書都說 yet 和 just 等表示過去時間的副詞必須與現在完成式連用,但在英文雜誌中卻經常見到它們與過去式連用,如 Did you phone her yet? 請問這句與 Have you phoned her yet? 何者才對呢?

A:這兩句都對。在非正式美式英語中,yet, already, just 和 ever 這幾個過去時間副詞,現今經常與簡單過去式連用,如 The bell just rang. (鈴剛響過);I already saw him. (我看見過他);Did you eat yet? (你吃了嗎?)。但在英式英語中,它們都使用現在完成式,如 The bell has just rung.;I’ve already seen him.;Have you eaten yet?

ever 的用法亦同,所以下面兩句的意思是一樣的:

  • Did you ever go to mainland China? (你去過中國大陸嗎?)
  • Have you ever been to mainland China?

Q:I’ve lived here for three years. 和 I’ve been living here for three years. 有何不同呢?

A:這問題中的第一句是現在完成式 (present perfect),而第二句是現在完成進行式 (present perfect progressive)。現在完成式主要是強調在過去某一不確定時間已完成但與現在仍有關連的動作,如 The author has written three books. (這位作家已寫了三本書)。現在完成進行式則是在強調「最近性」,所以它經常與 recently 或 lately 連用,如 She has been working hard recently. (她最近一直努力地工作)。

這兩者的另一項差異是,現在完成進行式可以用來表示最近完成的動作產生現在的結果或對現在造成的影響,但現在完成式則沒有這樣的用法,如 I have been working in the garden, and that’s why my hands are so dirty. (我一直在花園工作,那就是我的雙手很髒的原因 — 最近完成的動作產生現在的結果)。不過,這兩者都可用來表示動作持續到目前為止的時間,如 Peter has worked for that company for five years. (彼得已在那家公司工作五年);John has been painting for four hours. (約翰已作畫四個鐘頭)。

上述都是一般文法書所敘述的現在完成式和現在完成進行式的用法及它們之間的差異,在此不想著墨太多。然而,藉著這問題正好可以補充兩項在一般文法書看不到的用法或差異。

第一項正好回答這問題。如果完成式中的動詞是有關「居住」、「工作」或「職業」方面的動詞,那麼現在完成式和現在完成進行式的意思是一樣的。所以,I’ve lived here for three years. 和 I’ve been living here for three years. (我已住在這裡三年) 的意思並無二致,而上面的 Peter has worked for that company for five years. 也可寫成 Peter has been working for that company for five years.。

第二項也可說是這兩者之間另一非常重要的差異。當要表達已完成的數量時,要使用現在完成式,不可使用現在完成進行式 — 後者是在強調動作持續的時間。下面就是說明這項差異的例句:

  • He’s driven 320 kilometers. (他開車已開了 320 公里)
  • He’s been driving for 6 hours. (他開車已開了 6 個小時)

Q:我們不能說 I have met him five years ago.,而必須說 I have met him before.。為什麼 before 可以跟現在完成式連用,而 ago 卻不行呢?

A:before 和 ago 皆意為「以前」,但前者指的是「現在之前的任何時間」(亦即指過去某個不確定的時間),而後者是指「現在之前的某個確定的時間」。所以,before 可以跟現在完成式連用,而 ago 只能用於簡單過去式。例如:

  • I know that guy. I’ve met him somewhere before. (我知道那個人。我以前在某個地方見過他)
  • Have you been here before? (你以前有來過這裡嗎?)
    No, I’ve never been here before. This is my first time. (沒有,我以前從未來過這裡。這是第一次。)
  • Your mother phoned five minutes ago. Can you phone her back? (你母親 5 分鐘前來電。你可以給她回電嗎?)
  • I saw her for the first time at the National Palace Museum some twenty years ago. (我約 20 年前在國立故宮博物院首次見到她)

before 通常跟現在完成式連用,但也可用於簡單過去式。

  • I know that guy. I met him somewhere before.
  • Were you here before?
    No, I was never here before. This is my first time.
  • We were all students before. (我們以前都是學生)

ago 所指的時間都是從現在開始往以前推算,但 before 所指的時間除了上述也是從現在開始往以前推算之外,還可指從過去某個時間點往更早之前推算的時間。所以,當我們要表示比 ago 更早的時間時,我們只能用 before (that) 或 earlier 或 previously,而不能用 ago。在這種句子中,ago 用簡單過去式,而 before 用過去完成式。例如:

  • My grandfather died five years ago; my grandmother had already died three years before (that)/previously/earlier. (我祖父 5 年前過世,而我祖母在那之前 3 年就已經過世了 — 亦即祖母是在 8 年前過世)
  • I met my ex-girlfriend at a hotel in Bangkok in December 2006 when she told me that she had got married four years before. (2006 年 12 月我在曼谷一家飯店遇見我前女友,當時她告訴我,她在那之前 4 年就已結婚了 — 亦即她在 2002 年結婚)
  • Last year I went back to my hometown that I had left ten years before. (去年我回到暌違 10 年的故鄉 — 亦即我在 11 年前離開故鄉)

Q:How many subsidiaries does your company have got? 這句對嗎?

A:在表示「有,具有」的意思時,英式英語可能使用 have/has 或 have/has got (美式英語通常使用 have/has),雖然這兩者是通用的,但 have/has got 用在口語的情況比較多。注意:have/has got 並非 get 的現在完成式。例如:She has got blue eyes. (她有一雙藍眼睛) (英);She has blue eyes. (英和美)。

若使用 have/has,我們通常使用助動詞 do/does 來構成否定和問句;若使用 have/has got,那麼我們通常使用助動詞 have/has 來構成否定和問句。是故,問題中的句子是不對的,因為它使用 has got,所以必須用 has 來作助動詞,不是用 does。這個句子應改為 How many subsidiaries has your company got? (貴公司有多少家子公司呢?) 或 How many subsidiaries does your company have?。

現在讓我們來看看 have/has 和 have/has got 的否定和問句:

  • I haven’t any money. (我一點錢也沒有)
    = I haven’t got any money.
    = I don’t have any money.
  • Have you got a car? Yes, I have. (你有車子嗎? 是的,我有) (英)
    = Do you have a car? Yes, I do. (英和美)
  • You’ve got a sore throat as well as a runny nose, haven’t you. (你喉嚨痛還有流鼻涕,對不對?)
  • You have enough money to buy a car, don’t you. (你有足夠的錢買車,對不對?)
    (注意:問句簡答及附加問句將因助動詞的不同而有所不同)

有一點必須注意的是,在否定句 I haven’t any money. 中,have 似乎兼具助動詞和一般動詞雙重角色,但這種用法只有在 have/has 及其後的名詞之間夾有其他語詞 (本句是 any) 時才行得通。所以,如果你說 I haven’t money.,那就錯了,但可以說 I have no money.。同樣地,He hasn’t (got) a very good temper. (他的脾氣不太好) 亦是同理可證。

另外,還有一點也要特別注意,那就是:過去式和未來式不可使用 got。因此,你只能說 Did you have a car when you were a student. (你當學生的時候有車嗎?) (英和美),不能說 Had you got a car when you were a student.。同樣地,你可以說 I am going to have some free time at the weekend so I can help you with your homework. (我週末有空,所以我能幫助你做家庭作業),但卻不可以說 I am going to have got some free time at the weekend so I can help you with your homework.。

至於 have/has to 與 have/has got to (必須) 的處理方式和文法觀念亦與上述相同。不過,要注意的是,雖然 have/has (got) to 在大多數情況下都可與 must 互換,但它們的含意卻有些不同。Have/has (got) to 是表示客觀上的需要,是別人加諸給我們的「必須」,而 must 是主觀上的必要,是自己認為的「必須」。試比較下列兩句:

  • Sorry, I can’t come out now. I’ve got to tidy up my room before I’m allowed out. (對不起,我現在不能出去。我必須收拾好自己的房間才可外出)
  • They said that they must work hard. (他們說他們必須努力工作)

最後值得一提的是,在一般口語中,have got to 和 have got a 往往唸成 “gotta”。例如:I gotta go. (= I have got to go) (我必須走了);Gotta pen? (=Have you got a pen?) (有筆嗎?)。