浅谈c# 面向对象之类与对象

浅谈C#面向对象之类与对象

在 C# 中,类与对象是面向对象程序设计 (OOP) 的核心概念。类是一个模板或者蓝图,用来描述某个对象的属性和方法。对象是类的一个实例,是具有一组属性和方法的实体。

定义类

C# 中定义类使用 class 关键字。类由类名、数据成员和成员函数组成。

例如:

public class Person
{
    // 数据成员
    private string name;
    private int age;

    // 成员函数
    public void SetName(string name)
    {
        this.name = name;
    }

    public void SetAge(int age)
    {
        this.age = age;
    }

    public void Print()
    {
        Console.WriteLine($"Name: {name}   Age: {age}");
    }
}

以上代码定义了一个名为 Person 的类,该类有两个数据成员 nameage,以及三个成员函数 SetNameSetAgePrint。其中 SetName 用于设置人名,SetAge 用于设置年龄,Print 用于将人名和年龄打印出来。

创建对象

C# 中创建对象需要使用 new 关键字。例如,我们依据上面的 Person 类创建一个名为 jackPerson 对象,可以使用以下代码:

Person jack = new Person();

调用成员函数

对象通过访问成员函数来与外部进行交互。在上述 Person 类中,我们通过调用成员函数 SetNameSetAge 来设置 jack 对象的名字和年龄,通过调用成员函数 Print 来将 jack 对象的名字和年龄打印出来。示例如下:

Person jack = new Person();
jack.SetName("Jack");
jack.SetAge(20);
jack.Print();

运行上述代码会输出 "Name: Jack Age: 20"

示例1

假设我们要实现一个图形库,其中包含一个名为 Rectangle 的类,用来描述一个矩形。该类有数据成员 widthheight,以及成员函数 GetArea,它用来返回矩形的面积。

我们可以这样定义 Rectangle 类:

public class Rectangle
{
    private double width;
    private double height;

    public void SetWidth(double width)
    {
        this.width = width;
    }

    public void SetHeight(double height)
    {
        this.height = height;
    }

    public double GetArea()
    {
        return width * height;
    }
}

然后通过以下代码创建一个名为 recRectangle 对象,并将其宽度设置为 3.0,高度设置为 4.0,最后调用 GetArea 函数,可以计算出该矩形的面积:

Rectangle rec = new Rectangle();
rec.SetWidth(3.0);
rec.SetHeight(4.0);
double area = rec.GetArea();
Console.WriteLine(area);

输出结果为 12,即 3*4

示例2

在这个示例中,我们将实现一个名为 Dog 的类,用于描述一只狗。这个类有数据成员 nameage,以及两个成员函数 BarkFetch,分别代表狗的吠叫和拿东西。

代码如下:

public class Dog
{
    private string name;
    private int age;

    public Dog(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    public void Bark()
    {
        Console.WriteLine($"{name} is barking!");
    }

    public void Fetch(string thing)
    {
        Console.WriteLine($"{name} is fetching {thing}!");
    }
}

上面的代码中,我们通过提供一个带参构造函数,来创建 Dog 类的对象,第一个参数为狗的名字,第二个参数为狗的年龄。我们也可以添加一个无参构造函数,用来创建一个默认的狗对象。成员函数 Bark 用来输出狗的吠叫,成员函数 Fetch 用来输出狗的拿东西行为。

下面我们可以创建一个默认的狗对象 dog1,并调用它的成员函数 BarkFetch

Dog dog1 = new Dog("旺财", 3);
dog1.Bark();
dog1.Fetch("球");

运行上述代码后,输出:

旺财 is barking!
旺财 is fetching 球!

我们也可以创建一个带参数的狗对象 dog2,并调用它的成员函数 Fetch

Dog dog2 = new Dog("小黑", 2);
dog2.Fetch("骨头");

运行上述代码后,输出:

小黑 is fetching 骨头!

至此,我们详细讲解了C#中的类与对象的定义和使用,以及提供了两个示例说明,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈c# 面向对象之类与对象 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • asp.net 数组中字符串替换的几种方式

    下面是关于“ASP.NET 数组中字符串替换的几种方式”的详细讲解: 1. 普通 for 循环迭代替换 首先,我们可以使用for循环迭代将数组中所有字符串的指定子串替换成其它字符串。这种方式比较原始,但在某些情境下可能还是非常有效。 下面是示例代码: string[] arr = {"apple", "banana",…

    C# 2023年5月31日
    00
  • C# 中使用Stopwatch计时器实现暂停计时继续计时功能

    下面是详细讲解“C# 中使用Stopwatch计时器实现暂停计时继续计时功能”的完整攻略。 步骤一:引入命名空间 在使用Stopwatch计时器之前,需要先引入System.Diagnostics命名空间,可以通过以下代码实现: using System.Diagnostics; 步骤二:创建Stopwatch计时器对象 在正式使用Stopwatch计时器之…

    C# 2023年6月1日
    00
  • C# winForm实现的气泡提示窗口功能示例

    下面是C# winForm实现气泡提示窗口功能示例的完整攻略: 一、前置知识 在实现气泡提示窗口功能之前,需要掌握C#语言和WinForm应用程序的基础知识。这个功能通常需要使用到以下类库: System.Windows.Forms System.Drawing 二、实现步骤 1. 准备素材 我们需要准备三张图片和一个气泡提示窗口的Form,三张图片分别为“…

    C# 2023年6月1日
    00
  • 深入多线程之:深入生产者、消费者队列分析

    深入多线程之:深入生产者、消费者队列分析 为什么需要生产者、消费者队列? 在多线程编程中,生产者、消费者队列是一种常用的线程同步机制。这种机制基于一个队列,生产者线程往队列中添加元素,而消费者线程则从队列中读取元素。通过生产者向队列中添加元素,消费者从队列中取出元素的操作可以实现生产者与消费者之间的同步,并避免了线程之间的竞争。 生产者、消费者队列通常应用于…

    C# 2023年6月6日
    00
  • C#多线程中的互斥锁Mutex

    C#中的Mutex是一种互斥对象,它可以用于协调多个线程之间的共享资源的访问。Mutex在多线程并发访问共享资源时起到了防止冲突和保护数据的作用。在本文中,你将了解Mutex的基本概念、应用场景和如何使用Mutex实现多线程。 Mutex的基本概念 Mutex是一种互斥对象,它可以在多个线程之间协调共享资源的访问。当多个线程尝试访问共享资源时,只有一个线程可…

    C# 2023年6月1日
    00
  • C#泛型实例详解

    C#泛型实例详解 本文将详细讲解C#泛型的使用方法与实例,并通过两个示例进行演示。 什么是泛型 泛型在C#中的作用类似于Java中的模板,它能够将具体的数据类型参数化,使得类或者方法可以适应多种不同类型的数据。 使用泛型还有以下优点: 提高程序的可读性和可维护性,减少重复的代码 编译时类型安全,避免因类型错误导致的运行时异常 避免了装箱和拆箱操作,提高了程序…

    C# 2023年5月15日
    00
  • Ubuntu16.04系统搭建.Net Core开发环境

    在Ubuntu16.04系统上搭建.Net Core开发环境需要以下步骤: 安装依赖项:首先,我们需要安装一些依赖项。我们可以使用以下命令来安装: sudo apt-get update sudo apt-get install curl libunwind8 gettext apt-transport-https 添加Microsoft包存储库:接下来,我…

    C# 2023年5月16日
    00
  • 关于Unity中RectTransform与transform的区别

    关于Unity中RectTransform与transform的区别 在Unity中,RectTransform和transform是两个非常常用的组件,用于控制游戏对象在屏幕上的位置、旋转和缩放。本文将详细讲解RectTransform和transform的区别以及使用场景。 RectTransform和transform的区别 transform组件是所…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部