2015-12-21 116 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