1. 程式人生 > 其它 >C#的一些重要知識總結

C#的一些重要知識總結

技術標籤:C# 程式設計設計模式程式語言

1. 訪問修飾符

1). 有4個訪問修飾符:
private :只有當前類可用
protected :當前類和後代可用
internal :當前專案可用
public: 訪問不受限制
2). 放在哪裡?

訪問修飾符資料型別前面資料型別的成員前面
private不能OK【預設】
protected【重點】不能OK
internalOK[預設]OK
publicOKOK

3)base的作用,呼叫父類的構造方法和父類的其它成員(包括protected訪問型別的成員。

using System;
// 子類要呼叫父類中protected的成員,要用base.或者直接寫名字呼叫。
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
           
            //Animal animal = new Animal();
            Dog dog = new Dog();
            dog.CallAnimal();
        }
    }
     class Animal
    {
        public void Eat()
        {
            Console.WriteLine("the Animal eats");
        }
        protected void Bark()
        {
            Console.WriteLine("the Animal barks");
        }
    }
    class Dog:Animal
    {
        public void CallAnimal()
        {
            base.Eat();
            Bark();            
        }

    }
}

輸出結果為:
在這裡插入圖片描述

2種程式碼複用的方式

繼承:程式碼複用的基本方式。子類擁有所有父類的非私有成員。
note:建構函式不能繼承。
attention:建立子類時,自動呼叫父類的建構函式,並且父類中的先執行
組合:程式碼複用的基本方式
**共性:**程式碼複用;
不同:
繼承可以程式碼複用,也能概念複用; 缺點:耦合度高。
組合僅僅是程式碼複用,不能夠概念複用。【整體,部分】 優點:耦合度低。
原則:使用組合而非繼承 (複用的最佳實踐)。因為耦合度低。但也要具體問題具體分析。
語法:
繼承:
組合:class A {B b;}
實際問題的處理:
技巧 A B 1)is 判斷 繼承
2)is 不成立 has 判斷成立 組合

動物 狗
人 大腿
輸入控制 馬達

面向物件的設計原則

面向物件的設計原則【學oop之前瞭解 之後掌握】
把名稱記住!
1開-閉原則 (目標) :對擴充套件開放,對修改關閉
理想化的目標!
需求1:寫了一段程式碼【類,元件,系統】
game1 類Class1:F1,F2

需求2:game2 類F1,F2,F3 怎麼辦?
方法1:開啟類Class1,增加一個F3
方法2:繼承 Class2:Class1{F3}
介面,組合,………
有的總是需要 對原來的做一定的修改!
移動網際網路:手機 手機作業系統
Ios之前,微軟早就有了 mobile》WP7 8
2類的單一職責(一個類的定義)
設計,抽象得到的類:功能不要太多,越少越好,

功能多,功能屬於同一類別的功能
學生:上課,聽課,考試,講課【晨講】爭議?
老師:講課,備課!
一個類有且只有一個改變它的原因【少】 易複用,易維護!
3面向介面程式設計而非面向實現 (寫一個類時從哪入手)
先做好一個好對外的介面(公有的方法),實現不是第一步要思考.
先思考做什麼,為其他的元件提供什麼功能,而不是去先思考功能的實現
4使用組合而非繼承 (複用的最佳實踐)
如果僅僅為了複用優先選擇組合複用,而非繼承複用。
組合的耦合性對繼承低
5依賴倒置 ( 依賴抽象)
客戶端程式碼儘量依賴抽象的元件,因為抽象的是穩定的。實現是多變的。
6里氏替換 (繼承後的重寫)
父類出現地方可以被子類替換掉。要保護替換前的原有的工作,在替換後依然保持不變
子類在重寫父類方法時,儘量選擇擴充套件重寫。
7介面隔離 (功能拆分)
儘量定義小而精的介面,少定義大而全的介面
小介面之間功能隔離,實現類需要多個功能時可以選擇多實現.或介面之間做繼承
8迪米特法則 (類與類互動的原則)
不要和陌生人說話【原則】
類與類互動時,在滿足功能要求的基礎上,
傳遞的資料量越少越好.因為這樣可能降低耦合度,便於替換 class1 一個呼叫 class2
1) 男孩子 夥伴
2) 軟體中:方法呼叫少;引數越少越好 F1 F2(int)(int,string,int)
追求的目標:程式碼低耦合 好!便於替換
高耦合 兩個物件 頭 軀幹 連線 脖子 複雜 人真人
低耦合 假人:玩具,芭比娃娃 換頭!