“父”与“子”
Animal an = null;
Lion lion = new Lion();
an = lion; // 正确
lion = an; // 编译时错误
Lion = (Lion)an; // 正确
Monkey m = (Monkey)an; //运行时错误
- 子类对象可以赋值给父类(基类)变量,这实际上是“IS_A”关系的体现。
当子类、父类的方法名相同时,有两种情况:
- Overload(重载)
class Parent
{
public void OverLoadF()
{
}
}
class Child : Parent
{
public void OverLoadF(int i)
{
}
}
2.Override(重写)
class Parent
{
public virtual void OverrideF()
{
}
}
class Child : Parent
{
public override void OverrideF()
{
}
}
子类父类方法/字段“一模一样”时......
class Parent
{
public int value = 100;
public void HideF()
{
System.Console.WriteLine("Parent.HideF()");
}
}
class Child : Parent
{
public int value = 200;
public void HideF()
{
System.Console.WriteLine("Child.HideF()");
}
}
// 父类变量引用子类变量,此变量访问的方法和字段均为父类当中的方法和字段