virtual:虚方法 使用override进行重写
class Program
{
static void Main(string[] args)
{
Pet d = new Dog();
Cat c = new Cat();
Pet p = new Pet();
p.name = "父亲";
d.name = "大黄";
c.name = "咪咪";
p.dw();
d.dw();
c.dw();
}
}
public class Pet
{
public string name;
public void dw()
{
Console.WriteLine("动物名称"+name);
}
};
public class Dog : Pet
{
new public void dw()
{
Console.WriteLine("狗狗名称" + name);
}
};
public class Cat : Pet
{
};
具体调用那个方法根据赋值对象前的引用对象决定。
这是一堂比较重点的课程,学习后可继续复习
注意public不要漏掉
virtual
override
虚方法和多态
通过指向派生类的基类引用,我们仅仅能访问派生类的基类部分。
Pet cat=new Cat();
cat.PrintName();//调用的是基类中的PrintName方法
但是如果是virtual和override情况下,会先在Pet中看到是虚方法,然后就去派生类中找有没有重写方法,调用重写过的方法
设计原则

基类描述了共同的属性和行为;
调用方法是隐藏基类还是原基类方法取决于通过什么类进行引用,用基类调用基类方法,用派生类调用隐藏基类的方法(派生类方法)

virtual虚方法
override重写虚方法
以基类声名对象时,可以调用派生类中的重写的虚方法
以基类引用对象时,派生类中的隐藏方法则不可使用
依赖倒置原则,程序尽量依赖于抽象类

设计原则:依赖倒置原则,程序设计依赖抽象类,而不依赖于具体类。
派生类包含基类部分和派生类部分
基类描述了共同的属性和行为。
前提;基类的引用可以指向派生类。
子类之间具有差异性。
虚方法:声明为virtual的方法就是虚方法,基类的虚方法可以在派生类中使用override进行重
多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。

设计原则:依赖倒置原则,程序设计依赖抽象类,而不依赖于具体类。
派生类包含基类部分和派生类部分
基类描述了共同的属性和行为。
前提;基类的引用可以指向派生类。
子类之间具有差异性。
虚方法:声明为virtual的方法就是虚方法,基类的虚方法可以在派生类中使用override进行重写。
多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。多态是一种过程,虚方法是一种静态方法的定义
基类用 vritual 修饰方法
派生类用 override 修饰重写方法
便于统一初始化,同时兼顾使用个性化
虚方法是重写,new则是覆盖。用虚方法,当调用基类的时候会指向子类看看有没有用虚方法的,如果有则调用,没有就调用基类的。new则是调用基类就是用基类里的方法,调用子类就是用子类里的方法
声明为 virtual 的方法就是 虚方法,基类中的虚方法可以在派生类中使用override进行重写
虚方法是多态的前提
虚方法和多态
依赖倒置原则:程序设计要依赖于抽象类,而不是具体类

virtual 虚方法 override 多态
virtual是虚方法,父类的虚方法可以在子类中使用override进行重写
重写 override
虚方法的注意事项
隐藏方法中,继承的子类中定义与父类相同的函数名前加上new,便可以覆盖父类方法,
虚方法 :声明为vitual的方法就是虚方法。基类的虚方法可以在派生类中使用 override进行重写
多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向的派生类的实际类型,调用派生类中的同名重写函数,便是多态。

既便于统一又能张扬个性。
重写虚方法需要具有相同的可访问性,且积累方法不能是private
不能重写static方法或者非虚函数方法
方法,属性,索引器,事件,都可以声明为virtual或override
编程原则:依赖倒置原则。即程序设计要依赖抽象类,而不依赖具体类。
虚方法:重写虚方法必须相同的可访问性,且基类方法不能是private
不能重写static方法或者非虚方法
方法、属性、索引器、事件、都可以声明为virtual或override
重写虚方法方法属性必不能是private,static或者非虚方法不能被重写,
方法,属性,索引器,事件都能被重写。
多态实现
父类成员用virtual修饰,子类实现用override重写



基类(Pet)的引用可以指向派生类(Dog);派生类是基类的一种特殊情况;
声明为virtual 就是虚方法 ;
基类的虚方法可以在派生类中使用override
虚方法的其他知识点:
1、重写虚方法必须具有相同的可访问性,且基类方法不能是private
2、不能重写static方法或者非虚方法
3、方法、属性、索引器、事件都可以声明为virtual或者override
多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。