abstract 类,即抽象类不能实例化,只能由子类继承
abstract 方法、属性 必须被子类实现
virtual 方法 可以在子类重写,也可以不重写
virtual方法可以被子类重写,子类继承父类后,如果子类方法没有重写父类方法则调用父类,子类有重写则调用重写方法,不管调用发生在子类还是父类
public void text() {
//DataAnalyze a= new DataAnalyze(); 抽象方法不能被实例化
ETJX etj = new ETJX();
etj.Analyze();//调用父类方法,再调用子类重写的方法SaveToDB
DataAnalyze baseAnalyze = etj;
baseAnalyze.Analyze();
baseAnalyze = new ECMECC();
baseAnalyze.Analyze();
}
public abstract class DataAnalyze
{
public DataAnalyze()
{
Name = "DataAnalyze";
}
public abstract string Name { get; set; }
public virtual void Analyze()
{
Console.WriteLine(Name);
SaveToDB();
}
public virtual void SaveToDB()
{
Console.WriteLine("DataAnalyze保存到数据库");
}
}
public class ETJX : DataAnalyze
{
public ETJX()
{
Name = "ETJX";
}
public override string Name { get; set; }
public override void SaveToDB()
{
Console.WriteLine("ETJX保存到数据库");
}
}
public class ECMECC : DataAnalyze
{
public ECMECC()
{
}
public override string Name { get; set; }
//public override void Analyze()
//{
// Console.WriteLine(Name);
//}
}