abstract class definition
- Add the abstract keyword in front of the class
- Abstract classes cannot be instantiated, and abstract methods are defined in abstract classes (only abstract methods can be defined in abstract classes)
- Ordinary classes inherit abstract classes, and ordinary classes must implement the corresponding abstract methods in abstract classes
public abstract class MyAbstract
{
//静态构造函数
static MyAbstract()
{
}
//构造函数
public MyAbstract()
{
}
//方法
void Test1()
{
}
//抽象方法--交给子类来实现
public abstract void Test2();
}
class InheritAbstract : MyAbstract
{
//重写抽象类方法
public override void Test2()
{
throw new NotImplementedException();
}
}
Abstract class uses
According to different entity methods, setting abstract methods in abstract classes is convenient for inheriting classes to write concrete functions
/// <summary>
/// 数据连接
/// 1、加载驱动
/// 2、创建连接
/// 3、编写预编译和执行语句
/// 4、执行Sql语句
/// 5、释放资源
/// </summary>
public abstract class ConnectedDB
{
public void Connect()
{
LoadDriver();
CreateConnect();
PreparedState();
ExecuteSql();
Release();
}
public abstract bool LoadDriver();
public abstract bool CreateConnect();
public abstract void PreparedState();
public abstract void ExecuteSql();
public abstract void Release();
}
/// <summary>
/// SqlServer连接的具体类
/// </summary>
public class SqlServerDB : ConnectedDB
{
public override bool LoadDriver()
{
Console.WriteLine("完成SQL驱动");
return true;
}
public override bool CreateConnect()
{
Console.WriteLine("创建SQL连接");
return true;
}
public override void ExecuteSql()
{
Console.WriteLine("执行sqlserver的sql语句");
}
public override void PreparedState()
{
Console.WriteLine("编写预编译和sql执行语句");
}
public override void Release()
{
Console.WriteLine("释放SQL非托管资源");
}
}
/// <summary>
/// mysql连接的具体类
/// </summary>
public class MySQLDB : ConnectedDB
{
public override bool LoadDriver()
{
Console.WriteLine("完成MySQL驱动");
return true;
}
public override bool CreateConnect()
{
Console.WriteLine("创建MySQL连接");
return true;
}
public override void ExecuteSql()
{
Console.WriteLine("执行MySQL的sql语句");
}
public override void PreparedState()
{
Console.WriteLine("编写预编译和MySQL执行语句");
}
public override void Release()
{
Console.WriteLine("释放MySQL非托管资源");
}
}
public void Test()
{
SqlServerDB sqlServerDB = new SqlServerDB();
sqlServerDB.Connect();
MySQLDB mySQLDB=new MySQLDB();
mySQLDB.Connect();
}