方法的重写
方法的重写:在子类中重写父类的方法,加上一个override;调用父类的方法,但是要把父类的方法进行重写,更换了方法的内容
(就是子类想用一个方法,但是父类已经定义了次方法,可以利用方法的重写继续使用此方法!)
虚方法
虚方法(使用virtual):与方法的重写是对应的,当父类的方法被调用,但是被重写了,此方法就是虚方法。
(这也是多态的一种体现)
实例
public class person
{
public virtual void show() //虚方法
{
Console.WriteLine("lalala");
}
}
public class student:person
{
public override void show() //方法的重写
{
Console.WriteLine("我是个小猫");
}
public void say()
{
Console.WriteLine("我是个小狗");
}
}
注意事项:
1.虚方法不能写成静态的
2.方法重写必须与基类的方法名一致
3.不能与private一起使用
抽象类与方法
抽象方法和抽象类是由abstract修饰,而且抽象的方法只能存在于抽象的类中,但是抽象类中可以纯在非抽象成员!
他没有方法主体,子类继承抽象类的时候,方法必须重写,抽象类只能作用于基类,无法实例化。
抽象方法与之前的虚方法近似,但是它们的区别还是很明显的!
虚方法 | 抽象方法 |
用virtual修饰 | 用abstract修饰 |
要有方法体 | 不允许有方法体 |
可以被子类重写 | 必须被子类重写 |
除了密封类都可以写 | 只能在抽象类中 |
重载和重写的区别
重载:是方法名称相同,参数或参数类型不同,我们可以在需要的时候,进行多次重载以适应不同需要!它是面向过程的概念。
重写:是对父类(基类)中函数的重写。它是面向过程的概念。