首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 進階 (六):介面設計、實作與介面繼承

     編輯:關於C#

C# 介面程式設計:契約定義、多資料庫切換案例、介面繼承規則

介面命名慣例以 I 開頭。定義「能做什麼」,不關心「怎麼做」。本文以用戶操作介面為例,展示 MySQL 升級 SQL Server 時的無縫切換,並說明介面繼承規則。

一、介面定義與實作


using System;

namespace gosoa.com.cn
{
    public interface IUserOperation
    {
        bool UserExists(string username);
        bool UpdateUserPwd(string newPwd, string oldPwd);
    }

    public class SqlUserOperation : IUserOperation
    {
        string uname = "pan";
        public string oldPwd = "gosoa.com.cn";

        public bool UserExists(string username)
        {
            return username == uname;
        }

        public bool UpdateUserPwd(string newPwd, string oldPwd)
        {
            return newPwd == oldPwd; // 簡化邏輯
        }
    }

    public class MainClass
    {
        static void Main(string[] args)
        {
            string newPwd = Console.ReadLine();
            string username = Console.ReadLine();

            SqlUserOperation one = new SqlUserOperation();
            IUserOperation two = new SqlUserOperation(); // 介面型別參考

            if (two.UserExists(username)) Console.WriteLine("用戶存在");
            else Console.WriteLine("用戶不存在");

            if (two.UpdateUserPwd(newPwd, one.oldPwd)) Console.WriteLine("密碼修改成功");
            else Console.WriteLine("密碼修改失敗");
        }
    }

    // 未來切換 MySQL 只需新增實作類別
    // public class MysqlUserOperation : IUserOperation { ... }
}

二、關鍵觀念

  • IUserOperation two = new SqlUserOperation();:介面型別參考指向實作類別實例,實現多型。
  • 實作類別必須實作介面所有成員,否則編譯錯誤。
  • 未來擴充:新增 MysqlUserOperation 實作同介面,上層邏輯完全不用動。

三、介面繼承

  • 介面可繼承多個基底介面:interface IC : IA, IB { }
  • 實作類別需實作該介面及其所有父介面的所有方法。

四、介面 vs 抽象類別 選型指南

場景建議
定義跨類別層級的能力契約介面
提供部分預設實作、共享欄位/狀態抽象類別
需要多重實作組合介面 (C# 單一類別繼承)
版本演進需預設實作 (C# 8.0+)介面 default 方法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved