文章目录
一、方法和接口
重载 override
C#中允许方法名重复(方法重载),要求方法参数要么个数不同,要么类型不同
//三个方法名字都叫Learn 方法1、2参数个数相同但是类型不同 方法1、3参数类型相同但是个数不同
public void Learn(string subject, int time)
{
Console.WriteLine("学习{0}科目, 学习时长:{1}", subject, time);
}
public void Learn(string subject1, string subject2)
{
Console.WriteLine("学习{0}科目, 学习{1}科目", subject1, subject2);
}
public void Learn(string subject, int time, float ratio)
{
Console.WriteLine("学习{0}科目, 学习时长:{1}, 学习效率:{2}", subject, time, ratio);
}
重构 override
虚方法 virtual
virtual虚方法
- 加关键字 virtual 这样就将该方法标记为虚方法 virtual public void Speak(){}
- 这个方法其实就是为了重写方法而存在的 public override void Speak(){}
- 基类虚方法可以在派生类用override重写
- 【什么时候使用】实现这个功能(输出)要写在父类中,在不同的子类中需要重写
- 【作用】动物会叫,默认有一个叫声,但是猫狗叫声不一,重写实现多态
- 不能是private和static
基类引用和派生类引用
Pet基类、Dog派生类
# pet.Speak() 基类引用 如果派生类没有override,直接使用虚方法
# pet.Speak() 基类引用 如果派生类有override,直接使用重写方法
# dog.Speak() 派生类引用 直接使用重写的方法
拓展方法和静态类 Extension Methods
- 该参数以 this 修饰符为前缀
- C#扩展方法第一个参数指定该方法作用于哪个类型
- 必须是静态类才可以添加拓展方法,静态类中要定义静态方法
1.首先我们要准备一个 普通类
public class Student
{
public string StuInfo()