类
类就是具有相同的属性和功能的对象的抽象的集合
1. 类的定义使用关键字class
类的定义格式:
class 类名:
类体
class Cat
{
public string Name = "Tom";
public int Age = 3;
public string Shout()
{
return "喵";
}
}
类体由属性和方法组成
属性是类中的变量,用于描述类的特征
方法是类中的函数,用于描述类的行为
2. 类的命名
类的命名规则:
类名由一个或多个单词组成,每个单词的首字母大写,其余字母小写,例如:Student
类名不能是Python的关键字,例如:class, def, if等
3. 类的实例化
类的实例化就是创建类的对象,使用关键字new来创建类的对象
类的实例化格式:
对象名 = 类名()
类的实例化过程:
创建一个对象
调用类的构造方法(如果没有定义构造方法,则使用默认的构造方法)
将对象的引用赋值给对象名
类的实例化示例:
Cat cat = new Cat();
cat.Shout();
4. 类的属性
类的属性是类中的变量,用于描述类的特征
类的属性的定义格式:
class 类名:
属性名 = 属性值
类的属性的示例:
class Cat
{
public string Name = "Tom";
public int Age = 3;
}
5. 类的方法
类的方法是类中的函数,用于描述类的行为
类的方法的示例:
class Cat
{
public string Shout()
{
return "喵";
}
}
6. 类的构造方法
类的构造方法是类中的特殊方法,用于初始化类的对象
类的构造方法的示例:
class Cat
{
public string Name;
public int Age;
public Cat(string name, int age)
{
Name = name;
Age = age;
}
}
7. 类的继承
类的继承是类与类之间的关系,一个类可以继承另一个类的属性和方法
类的继承的示例:
class Animal
{
public string Name;
public int Age;
public void Shout()
{
Console.WriteLine("动物在叫");
}
}
class Cat : Animal
{
public void Meow()
{
Console.WriteLine("喵");
}
}
8. 类的多态(方法的重载)
类的多态是类与类之间的关系,一个类可以有多种表现形式
类的多态的示例:
class Animal
{
public virtual void Shout()
{
Console.WriteLine("动物在叫");
}
}
class Cat : Animal
{
public override void Shout()
{
Console.WriteLine("喵");
}
}
class Dog : Animal
{
public override void Shout()
{
Console.WriteLine("汪");
}
}
Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.Shout(); // 输出:喵
animal2.Shout(); // 输出:汪
重载和重写的区别
重载是同一个类中,方法名相同,参数列表不同
重写是子类重写父类的方法,方法名和参数列表都相同
9. 类的封装
类的封装是类与类之间的关系,一个类可以封装其他类的属性和方法
类的封装的示例:
class Animal
{
private string name;
private int age;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public void Shout()
{
Console.WriteLine("动物在叫");
}
}
// 在主程序中实例化Animal类并使用Name属性
class Program
{
static void Main(string[] args)
{
// 实例化Animal类
Animal myAnimal = new Animal();
// 设置Name属性
myAnimal.Name = "Buddy";
// 获取并输出Name属性
Console.WriteLine($"The animal's name is: {myAnimal.Name}");
// 调用Shout方法
myAnimal.Shout();
}
}
10. 类的接口
类的接口是类与类之间的关系,一个类可以实现多个接口
类的接口的示例:
interface IAnimal
{
void Shout();
}
class Animal : IAnimal
{
public void Shout()
{
Console.WriteLine("动物在叫");
}
}
Animal animal = new Animal();
animal.Shout(); // 输出:动物在叫
11. 类的访问权限
类的访问权限是指类的成员(属性、方法、事件等)的访问级别,可以是public、private、protected、internal等
public表示它所修饰的类成员可以允许其他任何类来访问,俗称公有的
private表示只允许同一个类中的成员访问,其他类包括它的子类无法访问
protected表示只允许同一个类中的成员或者其派生类来访问
internal表示只允许同一个程序集中的成员访问,其他程序集中的类无法访问
(
情形一:比如MyCompany.MyProject.DAL里的若干个.cs文件,编译得到DAL程序集,而MyCompany.MyProject.BLL里的若干.cs文件,编译得到BLL程序集。
情形二:同样是MyCompany.MyProject.DAL空间里的,我可能有一个用于支持SQL Server的程序集DAL_SQLServer.dll,可能还有一个支持Oracle的程序集DAL_Oracle.dll。
命名空间与程序集没有一一对应的关系,关键还是看你的项目组织和输出)
类的访问权限的示例:
public class Animal
{
public string Name { get; set; }
private int Age { get; set; }
protected string Species { get; set; }
internal string Color { get; set; }
}
Animal animal = new Animal();
animal.Name = "Buddy"; // 可以访问public成员
//animal.Age = 5; // 不能访问private成员