Administrator
发布于 2025-10-05 / 0 阅读
0
0

C#7.1: 类的声明

一、类(Class)是什么?

  • 类是事物的抽象。比如:人类、鸟类都是事物的抽象。

  • 类用来描述一类事物的共性。也就是事物的特征(属性)和行为(方法)

  • 类是创建对象的“模板”。

  • 类使用class关键字创建。

二、对象是什么

对象(Object):根据类创建的具体实例。比如:

  • 小花是一只具体的猫对象。

  • 张三是一个具体的人对象。

  • 李四也是一个具体的人对象。


三、声明类的语法

一个典型的类通常由以下四种成员组成:

  1. 字段(Field)

  2. 属性(Property)

  3. 方法(Method)

  4. 构造函数(Constructor)

这些成员共同定义类类的特征和行为。不同类型的成员在面向对象编程中承担不同的角色,这些成员共同构建了类的结构和功能,使其具有自己的特性和行为。

1. 声明类的完整语法

[访问修饰符] [类修饰符] class 类名 [: 基类] [, 接口列表]
{
    //字段
    //属性成员
    //方法成员
    //构造函数
}

示例

public class Person
{
  // 字段
  private string name;
  private int age;
​
  // 属性
  public string Name { get; set; }
  public int Age { get; set; }
​
  // 构造函数
  public Person()
  {
      Name = "未知";
      Age = 0;
      Console.WriteLine("一个人诞生了");
  }
​
  //方法,打印信息
   public void DisplayInfo()
  {
      Console.WriteLine($"姓名: {Name}");
      Console.WriteLine($"年龄: {Age}");
  }
}
  • Person是类名称,按照约定通常使用帕斯卡命名法(首字母大写)。

  • 大括号中包含了类的成员:字段、属性、方法、构造函数。

2. 声明类的基本语法

class 类名
{
    // 声明字段
    [访问修饰符]  数据类型 字段名;
}

类名的命名方法

  1. 帕斯卡命名法:类名通常使用帕斯卡命名法:每个单词的首字母大写,其他小写。例如GetInfo等

  2. 语义化:类名应该具有描述性,以便在不查看类的定义的情况下也可以理解它的用途,避免使用单个字符或不具有描述性的类名。

  3. 名词化:如果类是具体的类型,类名通常使用名词,反映实际世界中的对象。

示例: 声明一个Person类

class Cat
{
    // 声明字段
    private string name;
    private int age;
}

三、创建对象的语法

类名 对象名 = new 类的构造函数名();

示例:

Cat cat1 = new Cat(); 

运行结果:

一只猫出生了!

这里有几个关键点:

  1. Cat: 是数据类型。

  2. cat1:变量名,表示一个Cat类型的对象。

  3. new 关键字:表示在内存中“新建一个对象”。

  4. Cat():调用的是构造函数

  5. 在 C# 中,构造函数的名字必须和类名相同。如果你没写构造函数,C# 会自动提供一个默认的无参构造函数。

四、给字段赋值的语法:

对象名.字段名 = 值;

示例

cat1.name = "小小";
cat1.age =  3;

五、访问修饰符

声明类的基本语法

[访问修饰符] class 类名
{
    // 声明字段
    [访问修饰符]  数据类型 字段名;
}

[访问修饰符] :控制类的可访问性。

  • Public:表示类是公共的,任何地方都可访问。

  • internal:表示类是内部的,只有当前项目内可访问(默认)

  • private:表示类是私有的,包含类内可访问(仅用于嵌套类)

示例: public修饰符的用法

Lesson1(需引入Lesson2)

using Lesson2;
​
class Program
{
    static void Main(string[] args)
    {
        Bird bird2 = new Bird();
    }
}

Lesson2

public class Bird
{
    public string _birdName;
    public int _birdAge;
}
​
class Program
{
    static void Main(string[] args)
    {
        Bird bird1 = new Bird();
    }
}

示例:private的用法

class Bird
{
    public string birdName;
    public int birdAge;
}
​
class Program
{
    //private是嵌套类修饰符,不能用于顶级
    private class Person
    {
        public string personName;
        public int personAge;
    }
    
    static void Main(string[] args)
    {
        Person p1 = new Person();
        p1.personName = "张三";
        p1.personAge = 10;
        
        Bird bird1 = new Bird();
    }
}

六、字段是什么

  • 字段是类中变量;

  • 字段用于存储对象的状态数据。

  • 字段表示对象的状态。

public class Person
{
    // 字段 - 存储对象的数据
    private string name;        // 存储姓名
    private int age;           // 存储年龄
    private string email;      // 存储邮箱
}

七、状态数据是什么

状态就是对象在某个时刻的"样子"或"情况"。

  • 状态数据就是对象在某个时刻的"数据样子"或“数据情况”。

  • 状态数据强调变量中的数据会随着时间改变的数据。

  • 状态决定行为

八、声明字段的语法

基本语法格式

[访问修饰符] [数据类型] [字段名称] [= 初始值];

具体示例

public class Student
{
    // 私有字段(只能在类内部访问)
    private string studentId;
    private string name;
    private int age;
    private List<string> courses;
    
    // 公有字段(不推荐,但需要了解)
    public string schoolName;
    
    // 带初始值的字段
    private bool isGraduated = false;
    private DateTime createdDate = DateTime.Now;
    
    // 只读字段(只能在声明时或构造函数中赋值)
    private readonly string country = "中国";
    
    // 常量字段(编译时常量)
    public const int MaxCourseCount = 10;
}

九、字段命名规范

字段名称: 通常使用 camelCase 命名;

public class NamingExample
{
    // ✅ 好的命名
    private string firstName;
    private int studentAge;
    private decimal accountBalance;
    private bool isActive;
    private DateTime createdDate;
    
    // ❌ 不好的命名
    private string n;          // 太简单
    private int a;             // 无意义
    private bool flag;         // 不明确
    private string str;        // 类型作为名称
}

练习

题目 1:创建学生类

要求:1. 创建一个 Student 类,包含以下字段;2. 然后创建几个学生对象并给字段赋值。

学号 (studentId)

姓名 (name)

年龄 (age)

班级 (className)

成绩 (score)

S001

张三

18

高一(1)班

85.5

S002

李四

17

高一(2)班

92.0

参考答案

题目 2:创建图书类

要求:1. 创建一个 Book 类,包含以下字段;2. 创建几本图书对象并赋值。

书名 (title)

作者 (author)

ISBN (isbn)

价格 (price)

页数 (pageCount)

是否可借 (isAvailable)

C#编程入门

王老师

978-7-121-12345-6

59.90m

350

true

数据结构与算法

李教授

978-7-121-12346-3

79.80m

480

false

数据库原理

张博士

978-7-121-12347-0

65.00m

420

true

参考答案

题目 3:创建汽车类

要求:1. 创建一个 Car 类,包含以下字段;2.创建几个汽车对象并赋值。

品牌 (brand)

型号 (model)

颜色 (color)

生产年份 (year)

价格 (price)

里程数 (mileage)

丰田

凯美瑞

白色

2022

189000m

15000.5

本田

雅阁

黑色

2021

175000m

25000.0

大众

帕萨特

银色

2023

195000m

8000.0

参考答案

题目 4:创建手机类

要求:1. 创建一个 Phone 类,包含以下字段; 2.创建几个手机对象并赋值。

品牌 (brand)

型号 (model)

颜色 (color)

价格 (price)

内存大小 (memoryGB)

屏幕尺寸 (screenSize)

苹果

iPhone 15

黑色

5999m

128

6.1

华为

Mate 60

银色

5499m

128

6.7

小米

14 Pro

蓝色

4999m

512

6.73

参考答案

题目 5:创建游戏角色类

要求:1. 创建一个 GameCharacter 类,包含以下字段; 2.创建几个游戏角色对象并赋值。

角色名 (characterName)

职业 (profession)

等级 (level)

生命值 (health)

魔法值 (mana)

攻击力 (attack)

防御力 (defense)

雷霆战神

战士

45

1500

200

180

120

冰霜法师

法师

42

800

800

220

60

森林游侠

弓箭手

40

1000

300

190

80

参考答案


评论