多态
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修饰的类
- 抽象类不能被实例化 但是继承的子类可以
- 遵循里氏替换原则 可以用作为容器来装子类
- 可以包含抽象方法
- 抽象方法:
- 只能在抽象类中声明
- 没有方法体
- 不能是私有的
- 继承后必须实现 用override重写
- 抽象方法:
- 继承抽象类必须重写其抽象方法
absetract class Fruits{
//抽象类中可以包含成员属性
public string name;
//抽象方法没有方法体
public abstract void Bad();
}
absetract class Apple : Fruits{
//抽象类中可以包含成员属性
public string name;
//抽象方法必须被重写
public override void Bad(){
Console.WriteLine("阿拉拉");
}
}抽象类和接口的区别:
抽象类是对类抽象的,接口是对行为或者功能抽象的。
抽象类:动物- 人,鸟,小狗,鱼
接口:飞,游泳,走路