2011-01-06 59 views
0

摘要這個詞是我們談論一個隊列類或任何類的時候。一堂課是抽象的嗎?在編程中如何使用抽象詞。那是抽象的?那是什麼意思?程序設計摘要

回答

5

OO中的摘要用於指示該類不能直接實例化,並且必須從實例化之前繼承。 Wiki很好地解釋了這一點。

4

抽象意味着您正在討論一個想法與您實際指向或創建的任何特定示例相距一個或多個級別。

就類而言,抽象類是抽象的,因爲它不能被實例化。一個可以被實例化的特定類是具體的,它可能是某個抽象類的一個例子。同樣,如果你的數據結構類討論'抽象'數據類型,例如Queue,那麼教師意味着Queue就是'FIFO數據結構'。 Java的AbstractQueue稍微不太吸引人。你可以「點」(不指針和內存的感覺,但在這個意義上「有一個隊列!」)可能是Java的的LinkedBlockingQueue

`Abstract` ... ... ... ... ... ... ... ... ... `Concrete` 
a queue   AbstractQueue    LinkedBlockingQueue 
a group   an infinite group   positive integers 
a car   a Ford  1995 Ford Taurus  My 1995 Ford Taurus VIN# 3489230148230 
0

抽象類不能被實例化,而不是具體的隊列從其他類繼承,通常是具體的類。它們通常包含通過繼承類來最小化代碼重複的常見代碼。

0

我認爲這可能意味着一些與編程有關的事情。但是,對於我來說,我認爲它與虛擬方法有關,虛擬方法可能根據底層對象類型執行不同的任務。這與總是進行相同的固定操作的方法形成對比。

實際上有「抽象類」,其中一個或多個方法是純虛擬的,這意味着它們不是由該類實現的。這樣的類不能被實例化。相反,您必須從中派生一個實現純虛方法的新類,然後您可以實例化第二個類。

1

術語「抽象」可能意味着大量不同的事情,具體取決於上下文。

「抽象」的兩個最常見的用途與面向對象編程有關。如果方法沒有實現,則稱爲「抽象」(或者,在C++中,稱爲「純虛擬」)。抽象方法的目的是指示從給定類繼承的類將全部具有帶給定簽名的方法,但該方法沒有合理的默認行爲。一個常見的例子是,在形狀的類層次結構中,形狀的基類可能具有在屏幕上繪製形狀的抽象方法。繪製「形狀」沒有很好的默認行爲 - 它是什麼形狀? - 但是任何單獨的形狀都將具有此功能的具體實現。

相關術語是一個「抽象類」,它是一個包含抽象方法的類。由於該類包含此抽象方法,因此不能擁有該類類型的具體對象。否則,如果您嘗試調用抽象方法,則會發現沒有與其關聯的實現。

在一個完全不同的上下文中,「abstract」一詞有時出現在術語「抽象數據類型」中,該術語用於描述支持某些數學運算集的對象,而不必解釋如何實現這些運算。例如,「堆棧」,「隊列」和「列表」都是抽象數據類型,因爲它們描述了給定類型的對象所期望的行爲而不給出實現(例如動態數組→鏈接列表→哈希表?)

術語「抽象」也出現在「抽象」中,這是將複雜系統簡化成更可管理的東西。例如,網絡路由通常被分解成不同數量的「層」,每個「層」負責處理端到端通信的一部分。每一層都負有特定的工作,並且必須以預定的方式接受輸入併產生輸出。這可以讓程序員在一層上處理所有其他圖層,將其視爲「黑盒子」,它可以神奇地完成工作,因爲只要您以正確的形式爲圖層提供輸入或以特定方式讀取某個圖層的輸出,您不需要擔心該圖層如何工作的細節。

希望這會有所幫助!

1

井OO一個很好的例子是動物,你有一個抽象類,像這樣:

abstract class Animal 
{ 
    public AnimalType Type { get; set; } 
} 

現在你不能直接申報的動物,你必須有一個從繼承的類動物,像一隻貓:

class Cat : Animal 
{ 
     public Cat() 
     { 
      Type = AnimalType.Feline; 
     } 
} 

所以這是行不通的:

Animal a = new Animal(); 

但這:

Animal a = new Cat(); 

所以在本質上,你在說什麼,是這是一個基類,你不能讓一個在它自己的,你需要更多的信息,說從它繼承的類。很難解釋,所以希望這個例子有所幫助!

+1

這是怎麼沒有得到更多的票?例如+1。 – webdad3 2011-06-24 18:16:51

0

抽象是一種從簡單的構建複合對象的方法。例如,一個函數可以看作是一種黑匣子抽象形式,其中函數的內部工作對用戶是隱藏的。

數據抽象通常是一種方法,它使程序員能夠從如何從更原始的數據對象構造細節中分離出複合數據對象的使用方式。