码迷,mamicode.com
首页 > Windows程序 > 详细

C#编程(6_类)

时间:2014-11-06 23:24:42      阅读:438      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   使用   sp   

  面向对象的程序设计(OOP,Object-Oriented Programming)是一种基于结构分析的、以数据为中心的程序设计方法。其主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个成为类(Class)的数据结构中,使用这个类时,只需要定义一个类的变量即可。

  “类”是一种构造,这种构造将其他类型的变量、方法、事件组合在一起,从而创建自己的自定义类型。如果没有声明为静态类,客户端代码就可以创建赋给变量的“对象”或“实例”,从而使用该类。在对变量的所有引用都超出范围之前,该变量始终保持在内存中。所有引用都超出范围时,CLR将标记该变量以提供垃圾回收。如果类声明为静态类,则内存中只存在一个副本,且客户端代码只能通过该类自身而不是“实例变量”访问该类。与面向结构程序设计不同,类支持“继承”。

  声明类:

bubuko.com,布布扣
pubic class Customer
{
   //Fields ,properties, methods. events go here...
}
View Code

  类中包含类数据成员(常数、域、事件)、功能成员(方法、属性、索引、操作符、构造函数、析构函数)和嵌套类型。类类型支持继承,派生的类可以对基类进行扩展和特殊化。

  C#中提供了很多标准的类。在开发时,可以使用这些类,也可以自己定义类,类的定义方法为:

[类修饰符]class 类名[:父类名]
{
    [成员修饰符]类的成员变量或者成员函数;
};

  “父类名”表示从那个类继承。“父类名”可以省略,如果没有父类名,则默认从Object类继承而来。
  尽管有时类和对象可互换,但是它们是不同的概念。类定义对象的类型,但它不是对象本身;对象是基于类的具体实体,有时称为类的实例。通过new关键字(后跟对象将基于类的名称)可以创建对象,如:

Customer object1 = new Customer();

  创建类的实例后,将向程序员传递回对该对象的引用。在前面的实例中,object1是基于Customer的对象的引用,但不半酣对象本身。实际上,可以在根本不创建对象的情况下创建对象引用:

Customer object2;

  建议不要创建像这样的不引用对象的引用,因为在运行时通过这样的引用来访问对象的尝试将会失败。

Customer object3 = new Customer();
Customer object4 = object3;

  此代码创建了两个对象引用,它们引用同一个对象。因此,通过object3对对象所做的任何更改都将反映在随后使用的object4中,由于基于类的对象是按引用来引用的,因此类称为引用类型。
  类继承是通过“派生”来实现的,而派生意味着类是使用“基类”声明的,它的数据和行为从基类继承。通过在派生的类名后面追加冒汗和基类名称,可以指定基类,如下所示:

Public class Manger : Employee
{
    //Employee fields, properties, methods and events are inherited
    //New Manager fields, properties, methods and events go here...
}

  当类声明基类时,它继承基类除构造函数以外的所有成员。
  与C++不同,C#中的类只能直接从一个基类继承。但是,因为基类自身也可能继承自另一个类,所以可以间接的继承多个基类。而且,一个类可以直接实现一个以上的接口。

  类可以声明为抽象类。抽象类包含具有签名定义但没有实现的抽象方法。抽象类不能进行实例化。只能通过实现抽象方法的派生类使用抽象类。相比之下,密封类不允许其他类从其派生。

public class Person
{
    // Field
    public string name;

    // Constructor that takes no arguments.
    public Person()
    {
        name = "unknown";
    }

    // Constructor that takes one argument.
    public Person(string nm)
    {
        name = nm;
    }

    // Method
    public void SetName(string newName)
    {
        name = newName;
    }
}
class TestPerson
{
    static void Main()
    {
        // Call the constructor that has no parameters.
        Person person1 = new Person();
        Console.WriteLine(person1.name);

        person1.SetName("John Smith");
        Console.WriteLine(person1.name);

        // Call the constructor that has one parameter.
        Person person2 = new Person("Sarah Jones");
        Console.WriteLine(person2.name);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output:
// unknown
// John Smith
// Sarah Jones

 

C#编程(6_类)

标签:style   blog   http   io   color   ar   os   使用   sp   

原文地址:http://www.cnblogs.com/haizhibin1989/p/4079990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!