前面有朋友發表過一篇名為“html">你看不懂的抽象類和接口的區別 ”的博文,我覺得作者博客的內容沒有很好的诠釋“你看不懂的抽象類和接口的區別”這個標題。
我來說說自己的看法。
先舉個例子,方便大家理解,然後從例子中抽象概括出結理論。
比如,一家生產門的公司,需要先定義好門的模板,以便能快速生產出各種規格的門。
這裡的模板通常會有兩類模板:抽象類模板和接口模板。
抽象類模板:這個模板裡面應該包含所有門都應該具有的共同屬性(如,門的形狀和顏色等)和共同行為(如,開門和關門)。
接口模板:有些門可能需要具有報警和指紋識別等功能,但這些功能又不是所有門必須具有的,所以像這樣的行為應該放在單獨的接口中。
有了上面的兩類模板,以後生產門就很方便了:利用抽象類模板和包含了報警功能的接口模板就能生產具有報警功能的門了。同理,利用抽象類模板和包含了指紋識別功能的接口模板就能生產具有指紋識別功能的門了。
總之:抽象類用來抽象自然界一些具有相似性質和行為的對象。而接口用來抽象行為的標准和規范,用來告訴接口的實現者必要按照某種規范去完成某個功能。
這是我自己的看法,歡迎大家和我探討這個問題。