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到类的作用以及概念。

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

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

相关推荐
特种加菲猫5 分钟前
初阶数据结构之栈的实现
开发语言·数据结构·笔记
江-小北7 分钟前
Java基础面试题04:Iterator 和 ListIterator 的区别是什么?
java·开发语言
鸽鸽程序猿22 分钟前
【前端】javaScript
开发语言·前端·javascript
kylin王国28 分钟前
R语言p值矫正整的方法
开发语言·r语言·p值
凯子坚持 c1 小时前
C++之二叉搜索树:高效与美的极致平衡
开发语言·c++
菜鸟起航ing1 小时前
Java中日志采集框架-JUL、Slf4j、Log4j、Logstash
java·开发语言·log4j·logback
凤枭香1 小时前
Python Scikit-learn简介(二)
开发语言·python·机器学习·scikit-learn
gkdpjj1 小时前
C++优选算法十四 优先级队列(堆)
开发语言·数据结构·c++·算法
Elihuss3 小时前
ONVIF协议操作摄像头方法
开发语言·php
Swift社区7 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift