在C#基礎知識之類和結構體中我詳細記錄了類、類成員、重載、重寫、繼承等知識總結。這裏就記錄一下對面向對象和麪向對象三大特性的廣義理解。html
1、理解面向對象編程
類是面向對象編程的基本單元,面向對象思想其實就是教給咱們如何合理的運用類的規則去編寫代碼。ide
2、理解面向對象的三大特性spa
1、封裝code
封裝就是經過給類及類中的成員變量、屬性和方法設置不一樣的訪問修飾符(public、protected、internal、protected internal、private)來控制它們的做用範圍,以達到封裝的目的。 htm
二、繼承對象
什麼是繼承?顧名思義,就是子類根據C#的規則 繼承父類的方法或者數據成員的一種方式。blog
注意事項:繼承
(1)C# 不支持多重繼承。可是,您可使用接口來實現多重繼承 接口
//基類 class Shape { public void setWidth(int w) { width = w; } public void setHeight(int h) { height = h; } protected int width; protected int height; } // 接口 PaintCost public interface PaintCost { int getCost(int area); } // 派生類 class Rectangle : Shape, PaintCost { public int getArea() { return (width * height); } public int getCost(int area) { return area * 70; } } class RectangleTester { static void Main(string[] args) { Rectangle Rect = new Rectangle(); int area; Rect.setWidth(5); Rect.setHeight(7); area = Rect.getArea(); // 打印對象的面積 Console.WriteLine("總面積: {0}", Rect.getArea()); Console.WriteLine("油漆總成本: ${0}" , Rect.getCost(area)); Console.ReadKey(); } }
(2)一個對象用父類聲明,使用子類實例化的三種狀況
1>通常狀況下:你用正常的辦法訪問不到子類本身的成員,只能訪問到從父類繼承來的成員。
2>在子類中用 override 重寫父類中用 virtual 申明的虛方法的狀況下,執行時調用的是子類中重寫的方法;
執行結果
3>若是子類中用 new 覆蓋父類中用 virtual 申明的虛方法狀況下,執行時調用的是父類中的虛方法;
運行結果
深究其緣由,爲什麼二者不一樣,是由於原理不一樣: override是重寫,即將基類的方法在派生類裏直接抹去從新寫,故而調用的方法就是子類方法;而new只是將基類的方法在派生類裏隱藏起來,故而調用的仍舊是基類方法。
三、多態
(1)概念:如何理解多態?多態性意味着有多重形式。在面向對象編程範式中,多態性每每表現爲"一個接口,多個功能"。整體而言,就是調用相同的方法,表現出不一樣的行爲,稱之爲多態。
(2)多態性的常見體現:虛方法、抽象類、接口