C# basic knowledge learning - abstract class definition and use examples (8)

abstract class definition

  1. Add the abstract keyword in front of the class
  2. Abstract classes cannot be instantiated, and abstract methods are defined in abstract classes (only abstract methods can be defined in abstract classes)
  3. 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();
        }

Guess you like

Origin blog.csdn.net/weixin_45496521/article/details/127305575