📜  C#|类和对象

📅  最后修改于: 2021-05-29 23:47:30             🧑  作者: Mango

类和对象是面向对象编程的基本概念,它围绕着现实生活中的实体。类是用户定义的蓝图或原型,从中可以创建对象。基本上,一个类将字段和方法(定义动作的成员函数)组合到一个单元中。在C#中,类支持多态性,继承,还提供派生类和基类的概念。

上课声明

通常,类声明仅包含关键字class ,后跟该类标识符(名称) 。但是根据应用程序的要求,有些可选属性可以与类声明一起使用。通常,类声明可以按顺序包括以下组件:

  • 修饰符:一个类可以是public或internal等。默认情况下,class的修饰符是internal
  • 关键字类别: class关键字用于声明类型class。
  • 类标识符:提供了类型为class的变量。标识符(或类的名称)应以首字母开头,该首字母应按惯例大写。
  • 基类或类:类的父类(父类)的名称(如果有的话),其前面带有:(冒号) 。这是可选的。
  • 接口:类实现的接口的逗号分隔列表(如果有的话),其前面带有:(冒号) 。一个类可以实现多个接口。这是可选的。
  • 正文类的正文用{}(大括号)包围。

类中的构造方法用于初始化新对象。字段是提供类及其对象状态的变量,方法用于实现类及其对象的行为。

例子:

// declaring public class
public class Geeks
{

    // field variable
    public int a, b;

      // member function or method
      public void display()
      {
          Console.WriteLine(“Class & Objects in C#”);
      }
}

对象

它是面向对象编程的基本单元,代表现实生活中的实体。一个典型的C#程序会创建许多对象,如您所知,这些对象通过调用方法进行交互。一个对象包括:

  • 状态:由对象的属性表示。它还反映了对象的属性。
  • 行为:由对象的方法表示。它还反映了一个对象对其他对象的响应。
  • 身份:它为一个对象赋予唯一的名称,并使一个对象能够与其他对象进行交互。

将Dog视为对象,请参见下图以了解其身份,状态和行为。

对象与现实世界中发现的事物相对应。例如,图形程序可以具有诸如“圆形”,“正方形”,“菜单”之类的对象。在线购物系统可能具有“购物车”,“客户”和“产品”之类的对象。

声明对象(也称为实例化类)

当创建一个类的对象时,该类被称为实例化。所有实例都共享类的属性和行为。但是这些属性的值(即状态)对于每个对象都是唯一的。单个类可以具有任意数量的实例。

例子:

当我们声明类似(type name;)的变量时。这通知编译器我们将使用该名称来引用类型为type的数据。对于原始变量,此声明还为变量保留了适当的内存量。因此,对于引用变量,类型必须严格是具体的类名称。

Dog tuffy;

如果我们这样声明一个引用变量(tuffy),则在实际创建并分配一个对象之前,其值将一直不确定(null)。仅声明引用变量不会创建对象。

初始化对象

new运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类。 new运算符还调用类构造函数。

例子:

// C# program to illustrate the
// Initialization of an object
using System;
  
// Class Declaration
public class Dog {
  
    // Instance Variables
    String name;
    String breed;
    int age;
    String color;
  
    // Constructor Declaration of Class
    public Dog(String name, String breed,
                  int age, String color)
    {
        this.name = name;
        this.breed = breed;
        this.age = age;
        this.color = color;
    }
  
    // Property 1
    public String getName()
    {
        return name;
    }
  
    // Property 2
    public String getBreed()
    {
        return breed;
    }
  
    // Property 3
    public int getAge()
    {
        return age;
    }
  
    // Property 4
    public String getColor()
    {
        return color;
    }
  
    // Method 1
    public String toString()
    {
        return ("Hi my name is " + this.getName()
                + ".\nMy breed, age and color are " + this.getBreed() 
                + ", " + this.getAge() + ", " + this.getColor());
    }
  
// Main Method
public static void Main(String[] args)
    {
          
        // Creating object
        Dog tuffy = new Dog("tuffy", "papillon", 5, "white");
        Console.WriteLine(tuffy.toString());
    }
}

输出:

Hi my name is tuffy.
My breed, age and color are papillon, 5, white

说明:此类包含单个构造函数。我们可以识别出构造函数,因为其声明使用与类相同的名称,并且没有返回类型。 C#编译器根据参数的数量和类型来区分构造函数。 Dog类中的构造函数采用四个参数。以下语句提供“ tuffy”,“ papillon”,5,“ white”作为这些参数的值:

Dog tuffy = new Dog("tuffy", "papillon", 5, "white");

执行此语句的结果可以说明为: