C#核心(2)类和对象

前言

在上一节中,我们已经了解了面向对象开发的概念和原则,那今天,我们就来讲讲c#中的类。

c#中的类是我们面向对象开发使用最频繁的东西。

在未来我们要学习的unity开发中也是必不可少的。

所以希望屏幕前的你务必把这一块的知识学得扎实一些,好为未来的工作做好打算。

类的概念

万物皆对象,用程序抽象出来的对象的概况就是类。

在C#中,类是一种数据结构,用于封装数据和行为。它是面向对象编程的核心概念之一。一个类可以定义对象的属性(数据)和方法(行为),并且可以根据该类创建多个对象。

我们概括一下注意事项(要点):

  1. 类一般具有相同的特征或者行为:比如不管是苹果树(对象)或者葡萄树(对象)都是树(一个类),他们都有根(特征)
  2. 是一类事物程序的抽象语言(用程序描述一个人的特征,描述后形成的数据结构就是类)
  3. 类是对象的模板,比如人(类)有说话的能力,小明说了你好(照着人提供的说话能力实现的)
  4. 可以通过类创建对象,比如有了人(类),就可以创建出一个叫小刚的人(对象)。
  5. 类的关键词:class

声明的语法

cs 复制代码
访问修饰符 class 类名
{
    特征------成员变量//构造函数和析构函数
    行为------成员方法//索引器
    保护特征------成员属性//运算符重载或者静态成员    
}

有些概念你看不懂也没关系,这些我们在后面都会一一讲解,你现在需要知道的就是,类里面会有特征和行为就OK了。

申明的实例

以下是博主对一个类的声明,接下来我们围绕着这个例子展开来讲解类。

我们来实现一个人的类,简单来说,他有名字,然后会打招呼,我们基于此来实现它。

cs 复制代码
public class Person
{
   // 特征
   private string name;

   // 属性
   public string Name//后续成员属性会讲,这里你只用知道是给name赋值就行
   {
      get { return name; }
      set { name = value; }
   }

   // 方法
   public void SayHello()
   {
      Console.WriteLine("Hello, my name is " + name);
   }
}

tips:声明一般在namespace语句块中。

类对象的概念

  • 类的声明和类对象的声明是两个概念,一个是声明框架,一个是声明实例。(声明树这一个种类和声明这里确实存在一颗怎样的树)
  • 类的声明类似枚举和结构体的声明,类的声明相当于声明一个自定义的变量类型
  • 对象是创建出来的,相当于声明一个指定类这种变量类型的变量
  • 这个过程我们一般称为实例化对象
  • 类对象都是引用类型

实例化

我们继续上面声明的类,然后来实例化一个person,叫John,然后调用他自我介绍的方法。

cs 复制代码
// 创建类的实例并使用
Person person = new Person();
person.Name = "John";
person.SayHello();

打印结果如下:

applescript 复制代码
Hello, my name is John
 

你可以自己尝试一下。

tips:如果我们再实例化一个new person,他们的所有信息也是独有的,彼此没有关系,int a和int b的区别类似。

强化

这是我们之前用结构体实现的一个小功能,现在我们用类重新来实现一下。

cs 复制代码
using System;

struct StudentGrade
{
    public string name;
    public int grade;

    public StudentGrade(string name, int grade)
    {
        this.name = name;//本身的name变量等于传入的name值
        this.grade = grade;
    }

    public void DisplayInformation()
    {
        Console.WriteLine("Name: {0}", name);
        Console.WriteLine("Grade: {0}", grade);
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建学生成绩实例
        StudentGrade student = new StudentGrade("John Doe", 85);

        // 显示学生成绩信息
        student.DisplayInformation();

        Console.ReadLine();
    }
}
 

可能你的实现过程和博主不一样,博主也使用了一些后面才会讲的知识点,但使用class是可以实现的哦。

cs 复制代码
using System;  

class StudentGrade  
{  
    public string Name { get; set; }  
    public int Grade { get; set; }  

    // 构造函数,传参
    public StudentGrade(string name, int grade)  
    {  
        Name = name;  
        Grade = grade;  
    }  

    // 方法用于显示学生成绩信息  
    public void DisplayInformation()  
    {  
        Console.WriteLine("Name: {0}", Name);  
        Console.WriteLine("Grade: {0}", Grade);  
    }  
}  

class Program  
{  
    static void Main(string[] args)  
    {  
        // 创建学生成绩实例  
        StudentGrade student = new StudentGrade("John Doe", 85);  

        // 显示学生成绩信息  
        student.DisplayInformation();  

        Console.ReadLine();  
    }  
}

你可能有疑问结构体和类有什么区别,博主后续会进行讲解,以及为什么不同结构体来代替类,博主也会在后续讲解。

接下来的学习,类肯定会萦绕你的脑海。

总结

我们今天对类进行了简单的学习,大概了解了一些概念,也做了一点练习,我想你已经能够get到类的作用以及概念。

可能有些知识点看上去好像很难,但博主相信你只要脚踏实地的学习,一定会成为一个程序员大佬的。

请期待我的下一篇博客!共勉!

相关推荐
不会C语言的男孩37 分钟前
C++ Primer 第3章:字符串、向量和数组
开发语言·c++
兰令水38 分钟前
leecodecode【反前后指针】【2026.5.31打卡-java版本】
java·开发语言
Dovis(誓平步青云)2 小时前
《QT学习第四篇:常见事件与UDP、TCP、文件系统、(锁、信号量、条件变量》
c语言·开发语言·汇编·qt
isyangli_blog10 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb20081110 小时前
FastAPI APIRouter
开发语言·python
Benszen10 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆10 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木10 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充11 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~11 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言