面向對象編程與面向實例編程

學習面向對象編程OOP,相信絕大多數人對於OOP的訪問權限都不太清楚。public,private,protect修飾詞究竟用在何處,有什麼樣的效果。
但是,這些東西都不是我們今天要講的,如果不清楚請各位讀者去看專業書籍。
今天我在這裏要講的是一般書籍中不會涉及到的知識,那就是面向對象編程與面向實例編程。面向對象編程我們理解,那麼什麼是面向實例編程呢?
講到這裏,我想大多數接觸到OOP編程的讀者在入門OOP的時候,一定都是將對象類比爲現實中的物體來學習和認知OOP編程的吧。這對於開發者確實是最生動形象的例子,拿他出來做比喻無可厚非。很多人因此入門,但是,這種比喻同樣誤導了許多開發者的思路,認爲面向對象編程就如同現實世界同樣的抽象規律。其實這是錯誤的。我說現實世界中的對象概念與OOP編程的概念並不是同類。模仿現實世界的編程應該叫做面向實例編程。
在現實世界中,對象是一個獨立的個體,如果我們針對這種理念進行編程,那麼我們的程序中應該隱藏所有私有數據和方法,只保留公開數據和方法。但是OOP編程有些不同,我們來看實例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FamiliarCSharp
{
class Program
{
private int valA = 0;

  Program(int m)
   {
       this.valA = m;
   }

   public void operateBrother(Program it)
   {
       Console.WriteLine("同類的private值:" + it.valA);
  }

   static void Main(string[] args)
   {
       Program v_a = new Program(20);
       Program v_b = new Program(400);

       v_a.operateBrother(v_b);
       Console.ReadKey();
   }

}
}

這個例子中產生了合法的輸出400,證明了所有的訪問修飾符其實都是針對不同的類而言,對於同一種類,所有的數據都是公開的。OOP編程中的對象只是方法和數據的集合與傳統的類型沒有什麼區別,都是存儲空間與操作方法定義的有序集合的意思,不要對OOP的概念頂禮膜拜,其實它只是一個包裝,本質上在更大尺度上將編程重新拉到了基礎類型層面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章