2015-12-21 115 views
-3
Class ObjName = new Class(); 


這一問題與的事實,我跌逾的定義如下:什麼c#類類型聲明說?

public class Thing{ 
// Stuff 
} 
public class Animal:Thing{ 
// Stuff 
} 

本聲明其次Thing x = new Animal();

相關問題:如何是第一與第二個關聯的類定義/類型(在new關鍵字之後)?

Link to the related article, by: Matthew Cochran

+2

第二個例子是定義。首先是聲明。他們是不同的,你應該閱讀以瞭解差異。 – DrewJordan

+1

如果我理解這個問題:動物類繼承自Thing,那麼可以將新的Animal()對象分配給Thing x引用。 –

+0

@AndreasJohansson親愛的安德烈亞斯,Google上有成千上萬的資源來描述類是什麼以及如何聲明它們。此外,YouTube上有數百個視頻教程,人們正在討論面向對象編程的基礎知識。祝你好運! – Alex

回答

1

Class ObjName = new Class();這種類型創建調用Class默認構造的對象,並指定指向該對象的可變的參考。

此外,這Thing x = new Animal();做了完全相同的事情(它創建一個對象,並將該對象的引用分配給一個變量)。但是,這裏有一個略有差異。一個Animal對象是一個Thing對象。換句話說,Animal繼承Thing。因此,可以將對Animal對象的引用分配給類型爲Thing的變量。

Here是一個很好的繼承鏈接。

+0

因此,實際發生的聲明是:Animal x = new Animal();?只是x的類型就是基類中的一個......哪個也是Animal類型的關鍵! :/ –

+0

@AndreasJohansson正確。發生上述兩件事。首先創建一個對象,然後將該對象的引用賦給變量'x'。沒有什麼比這更少的了。 – Christos

2

如果我猜你的意思正確...

public class Thing{ 
} 
public class Animal:Thing{ 
} 

這話說類動物從類派生的事情。 (動物:事)。所以,如果你填出來多一點...

public class Thing{ 
    void DoStuff() 
    { 
    Console.Write("Doing Stuff"); 
    } 
} 
public class Animal:Thing{ 

} 

,你可以做這樣的事情......

var ani = new Animal(); 
ani.DoStuff(); 

由於Inheritance

編輯:爲了您的利益條款使用,因爲他們可能對初學者(和專家)足夠困難,這將是一個類的定義

public class Thing 
{ 
    void DoStuff() 
    { 
    Console.Write("Doing Stuff"); 
    } 
} 

這將是一個變量聲明(這不是今天常見的,因爲它在幾年前是,至少在C#和相關語言)

Thing x; 

這些變量聲明和任務 - 也被稱爲「實例」爲我們正在創建一個類定義的實例。使用var這裏是一個很好的捷徑,除非有一個令人信服的理由,否則您應該考慮使用它,而不是在左側指定類型。

var x = new Animal(); 
var y = new Thing(); 
+0

是的,我知道單一定義的繼承。現在,引用基類,然後創建一個子類的實例是我無法涉及或查找有關信息的新東西! –

+0

c#不支持多重繼承,所以單個類都是可以繼承的單個類。但是,它們可以鏈接在一起DerivedTwo:DerivedOne,DerivedOne:Base。然後DerivedOne和Base中的任何可訪問都可用於DerivedTwo。 – StingyJack