首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 接口成員默認 public,不可顯式加修飾符:設計哲學解析

     編輯:程式設計綜合問答

直接回答

接口成員隱式 public,不允許寫 public、private 等修飾符(C# 8.0 前)。

設計哲學

  • 契約本質:接口定義「能做什麼」,而非「怎麼做」。所有成員必須對實現者可見,故強制 public。
  • 類比 USB 接口:物理接口暴露在外,供任意設備插入;私有接口無意義。
  • 統一性:避免實現類因訪問權限不足導致編譯錯誤。

C# 8.0+ 新特性:接口私有成員


interface ILogger {
    private void LogCore(string msg) { /* 默認實現 */ } // 私有輔助方法
    public void Log(string msg) => LogCore($"[{DateTime.Now}] {msg}");
}
  • private 成員只能有默認實現,不能被實現類訪問/重寫。
  • 用於接口內部代碼復用,不破壞契約公開性。

接口 vs 抽象類

特性接口抽象類
多實現類可實現多接口單繼承
狀態無實例字段 (C# 8.0 前)可有字段/構造器
訪問修飾符隱式 public任意
用途定義行為契約代碼復用 + 契約
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved