一、类(Class)是什么?
类是事物的抽象。比如:人类、鸟类都是事物的抽象。
类用来描述一类事物的共性。也就是事物的特征(属性)和行为(方法)
类是创建对象的“模板”。
类使用
class
关键字创建。
二、对象是什么
对象(Object):根据类创建的具体实例。比如:
小花是一只具体的猫对象。
张三是一个具体的人对象。
李四也是一个具体的人对象。
三、声明类的语法
一个典型的类通常由以下四种成员组成:
字段(Field)
属性(Property)
方法(Method)
构造函数(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 类名
{
// 声明字段
[访问修饰符] 数据类型 字段名;
}
类名的命名方法
帕斯卡命名法:类名通常使用帕斯卡命名法:每个单词的首字母大写,其他小写。例如GetInfo等
语义化:类名应该具有描述性,以便在不查看类的定义的情况下也可以理解它的用途,避免使用单个字符或不具有描述性的类名。
名词化:如果类是具体的类型,类名通常使用名词,反映实际世界中的对象。
示例: 声明一个Person类
class Cat
{
// 声明字段
private string name;
private int age;
}
三、创建对象的语法
类名 对象名 = new 类的构造函数名();
示例:
Cat cat1 = new Cat();
运行结果:
一只猫出生了!
这里有几个关键点:
Cat: 是数据类型。
cat1:变量名,表示一个Cat类型的对象。
new
关键字:表示在内存中“新建一个对象”。Cat()
:调用的是构造函数在 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. 然后创建几个学生对象并给字段赋值。
题目 2:创建图书类
要求:1. 创建一个 Book
类,包含以下字段;2. 创建几本图书对象并赋值。
题目 3:创建汽车类
要求:1. 创建一个 Car
类,包含以下字段;2.创建几个汽车对象并赋值。
题目 4:创建手机类
要求:1. 创建一个 Phone
类,包含以下字段; 2.创建几个手机对象并赋值。
题目 5:创建游戏角色类
要求:1. 创建一个 GameCharacter
类,包含以下字段; 2.创建几个游戏角色对象并赋值。