【面试】——不能搞混这些概念

类、结构、构造函数、抽象类这么多的概念一点一点的加++

 

1、定义一个类

    public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public virtual void SayHi()
{
Console.WriteLine("Hi~~~");
}
}

 ①类前面和类内部,可以用修饰符private,public,internal,protected来修饰,限制方位域范围。如果类的成员不写访问修饰符则默认为private。如果类前面不写访问修饰符默认为internal。

②类,内部可以定义属性,方法亦可设置虚方法,或将方法重载。

③类,可以继承,但是是单继承。

④类成员在使用前必须赋初值。

 

2、接口

接口
public interface ICanFly
{
void Fly();
}

①接口可以多继承,前面可以用public,internal,protected,来修饰,在不写任何修饰符的时候,默认为internal。当然你也可以写成private来修饰,但是这显然没有什么意义,其他程序集都不能访问。

②接口内可以写方法,事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。但是注意:C#中不能包含任何静态成员。

③接口内部设置的方法Fly,不能有实现;前面不能有修饰符。

 

3、构造函数

构造函数
public Person(string name,int age,string gender)
{
this.name=name;
this.age=age;
this.gender=gender;
}

   ①方法名称和类名必须保持一致。

  ②方法没有返回值。连void也不能有。方法的访问修饰符默认为public

  ③构造函数也可以方法重载。

 

4、结构

结构
    struct Person
{
private string _name;

public string Name1
{
get { return _name; }
set { _name = value; }
}
private void SayHi()
{
Console.WriteLine("Hello...");
}

}

结构和类一同别:

  相同点:语法类似。

  不同点:

  ①class是引用类型,继承自system.object,而struct是值类型,继承自system.valuetype。不具有多态性。注意system.valuetype是引用类型。

  ②class支持继承,而struct没有继承性。

  ③数据量比较小,的时候使用结构

  ④结构可以实现接口,但结构不能继承(可以通过反编译查看,int32类型,可以看到实现了很多接口)

 

5、抽象类

抽象类
public abstract class Person
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public string Email
{
get;
set;
}
public sbstract void SayHi();
}

①抽象类不能实例化,类继承此抽象类必须实现方法。

②当用抽象关键字标记方法有关键字,abstract标记方法的时候,方法不能有任何方法体

③如果这个类中有一个成语为抽象的,则整个类也是抽象的。

posted @ 2012-02-14 23:56 weifield 阅读(1512) 评论(5) 编辑 收藏