< 返回教程列表
2.1 类与对象
知识介绍
类(Class) 是对象的"蓝图/模板",对象(Object) 是类的"实例"。
定义一个类:
class Person
{
// 字段(成员变量)
public string name;
public int age;
// 构造方法(与类同名,没有返回值,创建对象时自动调用)
public Person(string n, int a)
{
name = n;
age = a;
Console.WriteLine("有参构造被调用");
}
// 无参构造
public Person()
{
Console.WriteLine("无参构造被调用");
}
// 方法(行为)
public void SayHi()
{
Console.WriteLine($"我叫{name},今年{age}岁");
}
}
创建对象(实例化):
Person p1 = new Person("张三", 20);
p1.SayHi(); // 我叫张三,今年20岁
Person p2 = new Person();
p2.name = "李四";
p2.age = 22;
p2.SayHi(); // 我叫李四,今年22岁
构造函数要点:
- 与类同名,无返回值(连
void都不能写) - 可重载(参数不同)
- 不写构造函数时,编译器自动提供无参构造
- 一旦写了有参构造,无参构造需要自己显式写
this 关键字:
class Person
{
private string name;
public Person(string name)
{
this.name = name; // this 指代当前实例,区分成员和参数
}
}
例题
例题1: 定义一个 Car 类。
class Car
{
public string brand; // 品牌
public string color; // 颜色
public int speed; // 当前速度
public Car(string b, string c, int s)
{
brand = b;
color = c;
speed = s;
}
public void Accelerate(int delta)
{
speed += delta;
Console.WriteLine($"加速到{speed} km/h");
}
public void Brake(int delta)
{
speed = Math.Max(0, speed - delta);
Console.WriteLine($"减速到{speed} km/h");
}
public void ShowInfo()
{
Console.WriteLine($"[{color}] {brand},速度{speed}km/h");
}
}
// 使用
Car myCar = new Car("Tesla", "红色", 0);
myCar.ShowInfo(); // [红色] Tesla,速度0km/h
myCar.Accelerate(60); // 加速到60 km/h
myCar.Brake(25); // 减速到35 km/h
练习题
定义一个
Student类,包含姓名、学号、班级三个字段,一个Show()方法输出信息,一个有参构造。定义一个
Rectangle(矩形)类,包含width、height字段,提供GetArea()求面积、GetPerimeter()求周长。定义一个
Calculator(计算器)类,提供加、减、乘、除四个方法,每个方法接收两个参数并返回结果。定义一个
Book类,包含title、author、price,写一个方法Discount(double rate)按折扣率修改价格(rate 范围 0~1)。