Contents

多态

多态

  • 多态按字面意思就是"多种状态"
  • 让继承同一父类的子类门 在执行相同方法时有不同的表现(状态)

vob关键字

  • v:virtual(虚函数)虚函数可以被子类重写
  • o:override(重写) 方法被重写后 当父类装子类时 会调用被重写后的方法
  • b:base(父类) 可以使用base调用父类的方法
class Fater{
	public int age;
	public string name;
	public void Speak(){
		Console.WriteLine("我是父类");
	}
    //虚函数
	public virtual void Sing(){
		Console.WriteLine("我是父类~~~~~~");
	}
}

class Son:Fater{
	public new void Speak(){
		Console.WriteLine("我是子类");
	}
    //重写父类方法 多态
	public override void Sing(){
        //可通过base保留父类的行为
        //base.Sing();
		Console.WriteLine("我是子类~~~~~~");
	}
}


Fater f = new Son();
f.Speak();//我是父类
f.Sing();//我是子类~~~~~~~

抽象类

  • 被abstract修饰的类
  • 抽象类不能被实例化 但是继承的子类可以
  • 遵循里氏替换原则 可以用作为容器来装子类
  • 可以包含抽象方法
    • 抽象方法:
        1. 只能在抽象类中声明
        2. 没有方法体
        3. 不能是私有的
        4. 继承后必须实现 用override重写
  • 继承抽象类必须重写其抽象方法
absetract class Fruits{
    //抽象类中可以包含成员属性
    public string name;
    
    //抽象方法没有方法体
    public abstract void Bad();
}
absetract class Apple : Fruits{
    //抽象类中可以包含成员属性
    public string name;
    
    //抽象方法必须被重写
    public override void Bad(){
        Console.WriteLine("阿拉拉");
    }
}

抽象类和接口的区别

抽象类是对类抽象的,接口是对行为或者功能抽象的。

抽象类:动物- 人,鸟,小狗,鱼

接口:飞,游泳,走路