可能重複:
Difference between object and instanceC#中的對象和類之間有什麼區別?
我有幾個問題:
- 一類的每個實例(除了一個抽象類)是一個對象?
- 抽象類不能被實例化,因此它們不是對象?
任何人都可以幫助我更好地理解上述概念,因爲它們涉及到C#?
可能重複:
Difference between object and instanceC#中的對象和類之間有什麼區別?
我有幾個問題:
任何人都可以幫助我更好地理解上述概念,因爲它們涉及到C#?
對象是類的一個實例。
類是一個對象的定義。它實際上並沒有成爲一個對象,直到它被實例化。由於抽象類無法實例化,因此不能創建該類型的對象。爲了創建對象,需要定義一個子類。
是的,每個類的實例都是一個對象。
類(不論是否抽象)不是對象。他們是類型。
即使摘要類可以被實例化,但它們仍然不是對象。 – 2011-12-18 06:10:22
應該指出的是,在某些語言中,類也是對象。 – 2013-04-16 15:15:46
@ marco-fiset嗯,這與C#特別相關,所以不確定其他語言在這裏如何相關。 – jdmdevdotnet 2017-06-30 22:02:31
一個抽象類永遠不能實例化(所以永遠不能成爲一個對象)。如果您創建的繼承自抽象基類的類並實例化它,那麼它將具有抽象類的屬性以及它自己的屬性。創建抽象基類後的目標是「強制」派生類來實現某些功能(類似於接口,但不完全)。
即,接口*不能*具有任何*實現的方法,但僅僅是:接口。 – Gravity 2011-12-30 01:40:47
有一個常見的比喻,可能更清楚地表明類和對象的概念之間有什麼區別。
一個班級就像一個食譜。一個物體是蛋糕。從一個食譜你可以建立許多蛋糕。配方只能包含提示(是抽象的),併爲您自己創建配方(實現類)留下空間,然後您可以從中製作蛋糕(對象)。
所以一個類不是一個對象,它是該類的對象的描述。抽象類包含方法和其他有用的信息,用於實現從這個抽象類派生的類。對象不能從抽象類創建/實例化(因爲它的定義不完整)。
每個類的實例(抽象類除外)都是一個對象?
是的。這就是「實例」的定義。
抽象類不能被實例化,因此它們不是對象?
類與實例或對象不相同。一個對象是一個類的實例。想象一下動物園模擬。一個物體就像一隻特定的獅子,而一個類更像是一隻獅子的描述。抽象類是對那些過於模糊的事物的描述,使得僅基於該描述來構建某些東西是合理的(例如「動物」)。這就是爲什麼你不能實例化它們。像動物一樣的東西可能太模糊,不能直接請求程序;相反,該計劃只會要求更具體的東西,如獅子,老虎或貓鼬。
class Cat {} // It is a cat. Just a cat. Class is a general issue.
myCat = new Cat("red", "5kg", "likes milk", "3 years old"); // It is my cat. It is an object. It is really a cat.
yourCat = new Cat("gary", "3kg", "likes a meal", "5 years old"); // It is your cat. Another cat. Not my cat. It is really a cat too. It is an object;
abstract class Animal {} // Abstract class
animal = new Animal(); // It is not correct. What is 'animal'? Cat, dog, cow? I don't know.
class Dog : Animal {} // It is a class. It is a dog in general.
someDog = new Dog("brown", "10 kg", "likes cats"); // It is really a dog. It is an object.
1.是(給定#2)和2.是。一個曲線球是靜態類,它們在進程的整個生命週期中基本上是單個對象。 – 2011-12-18 06:08:28
它有助於將抽象類視爲等價於接口。它們只是可以提供默認實現的接口。 – 2011-12-18 06:10:06
相關:http://stackoverflow.com/questions/3323330/difference-between-object-and-instance和http://stackoverflow.com/questions/3686647/whats-the-best-way-to-define-the -words-class-and-object-to-someone-who-hasn – 2011-12-18 06:12:23