面向對象的一些基本概念

来源:http://www.cnblogs.com/qianLL/archive/2016/03/02/5235102.html
-Advertisement-
Play Games

類與實例 對象是一個自包含的實體,用一組可識別特性和行為來標識 簡稱OOP 類就是具有相同的屬性和功能的對象的抽象的集合 ‘class’是便是定義類的關鍵字 (OC中用@interface 類名:繼承類 @end) 第一,類名稱首字母記者要大寫。多個單詞則各個首字母大寫,第二,對外的方法需要用‘pu


 

類與實例

對象是一個自包含的實體,用一組可識別特性和行為來標識 簡稱OOP   類就是具有相同的屬性和功能的對象的抽象的集合   ‘class’是便是定義類的關鍵字 (OC中用@interface 類名:繼承類 @end) 第一,類名稱首字母記者要大寫。多個單詞則各個首字母大寫,第二,對外的方法需要用‘public’修飾符(oc中用@public)     實例,就是一個真實的對象,實例化就是創建對象的過程,使用new關鍵字來創建(oc中可以用new,也可以使用[[類名 alloc] init]實例化對象)

構造方法

Map
構造方法,又叫構造函數,其實就是對類進行初始化。構造方法與類同名,無返回值,也不需要void,在new時候調用   所以類都要構造方法,如果你不編碼則系統預設生成空得構造方法,若你有定義的構造的方法,那麼預設的構造方法就會失效了(就好像OC中的init方法和便利初始化函數)

方法重載

Map
方法重載提供了創建同名的多個方法的能力,但是這些方法需要使用不同的參數類型 註意,方法重載時,兩個方法名必須相同,但是參數類型還活著個數必須要有所不同,否則重載就沒什麼意義了 方法重載可在不改變原方法的基礎上,增加功能就可以了

繼承

Map
對象的繼承代表了一種’is-a’的關係,如果兩個對象A和B,可以描述為’B’是’A’,則表明B可以繼承A   繼承者還可以理解為時對被繼承者的特殊化,因為他除了具備被繼承者的特性外,還具備自己獨有的個性   繼承定義了類如何相互關聯,共用特性。繼承的工作方式是,定義父類和子類,或者叫做基類和派生類,其中子類繼承父類的所有特性。子類不但繼承了父類的所有特性,還可以繼承父類所有的特性,還可以定義新的特性   如果子類繼承於父類,第一,子類擁有父類的非private的屬性和功能,第二,子類具有自己的屬性和功能,即子類可以擴展父類沒有的屬性和功能,第三,子類還可以以自己的方式實現父類的功能(方法的重寫)protected表示繼承時,子類可以對基類有完全訪問權   子類從它的父類中繼承的成員有方法,域,屬性,事件,索引指示器,但是對於構造方法,有一些特殊,他不能被繼承,只能被調用,對於調用父類的成員,可以用base關鍵字 (OC中super)   不用繼承的話,如果要修改功能,就必須在索引重覆的方法中修改,代碼越多,出錯的可能性就越大,二繼承的優點是,繼承使得所有子類公共的部分都放在了父類,使得代碼得到了共用,這久避免了重覆,另外,繼承課使得修改或擴展而來的實現較為容易   繼承是有缺點的,那就是父類類變,則子類不得不變,繼承會破壞包裝,父類實現的細節暴露給子類    繼承顯然是一種類與類之間強耦合的關係   當兩個類之間具有‘’is-a’的關係時,就可以考慮繼承了

封裝

Map
每個對象都包含它能進行操作所需要的所有信息,這個特性稱為封裝,因此對象不必依賴其他的對象來完成自己的操作,這樣方法和屬性包裝在類中,通過類的實例來實現   封裝的好處 1.良好的封裝能夠減少耦合 2.類內部的實現可以自由的修改 3.類具有清晰的對外介面

介面

Map
介面是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合,一旦類實現了介面,類就可以支持介面所指定的所有屬性和成員。聲明介面在語法上與聲明抽象類完全相同,但是不允許提供介面中的任何成員的執行方式。所以介面不能實例化,不能有構造方法和欄位;不能有修飾符,比如public,private等,不能聲明虛擬的或靜態的等,還要實現介面的類就必須要實現介面中的所有的方法和屬性     一個類可以支持多個介面,多個類也可以支持相同的介面,介面的命名,前面要加一個大寫的字母’I’ 介面用interface聲明,而不是class,介面名稱前面要加’I’,介面中的方法或者屬性前面不能有修飾符,方法沒有方法體   抽象類可以給出一些成員的實現,介面卻不包含成員的實現,抽象類的抽象成員可被子類部分實現,介面的成員需要實現類完全實現,一個類只能堅持一個抽象類,但可以實現多個介面等等 1.類是對對象的抽象:抽象類是對壘的抽象:介面是對行為的抽象 2.如果行為跨越不同類的對象,可使用介面;對於一些相似的類的對象,用繼承抽象類   實現介面和繼承抽象類並不衝突  

抽象類

Map
C#允許把類和方法聲明為abstract 即抽象類和抽象方法   1.抽象類不能實例化 2.抽象方法必須是被子類方法重寫的方法 3.如果類中包含抽象方法,那麼類就必須定義為抽象類,無論是否還包含其他的一般方法 4.抽象類擁有儘可能多的共同代碼,擁有儘可能少得數據[J&DP] 5.抽象類通常代表一個抽象概念,他提供一個繼承的出發點,當設計一個新的抽象類時,一定是用來繼承的,所以,在一個以繼承關係形成的等級結構裡面,樹葉節點應當是具體類,而樹枝節點應當是抽象類  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 設置微信支付需要的4個參數APPID APPSECRET MCHID KEY在哪裡找呢 其中APPID APPSECRET為公眾號的appid和appsecret,在微信公眾平臺後臺查看 開發》基本配置》開發者ID MCHID和KEY為微信支付商戶號和API密鑰,在微信支付商戶平臺後臺查看 MCHI
  • http://blog.csdn.net/bluishglc/article/details/47909593?utm_source=tuicool&utm_medium=referral 實際工作中用到網路知識的機會並不多,雖然以前學習過,但是許久不用自然也就生疏了。最近拿到幾台雲上的虛擬機,需要
  • MyEclipse 2016基於Eclipse Mars 1 (4.5.1),除了在Eclipse基礎上做了更新之外,我們還更新了集成在MyEclipse上的第三方工具,比如STS, m2e, BIRT, Webtools, eGit等等。 Mars集成對Java的一些核心進行了改進,比如編譯器的...
  • PDO是一個“資料庫訪問抽象層”,作用是統一各種資料庫的訪問介面,與mysql和mysqli的函數庫相比,PDO讓跨資料庫的使用更具有親和力;與ADODB和MDB2相比,PDO更高效。目前而言,實現“資料庫抽象層”任重而道遠,使用PDO這樣的“資料庫訪問抽象層”是一個不錯的選擇。 PDO中包含三個預
  • 假期本想要嘗試做一些不同的事,卻一直荒廢,偶然看到了幕課,頓時後悔,再借我一個假期,一定在幕課上認真學習。比自己看書效率高很多啊! 於是反正無聊,用了一個晚上瞭解了一下python(僅限於瞭解),總想做點啥有意思的,想來想去還是和抓包聯繫上了。 鑒於Wireshark我是真不怎麼會用,這次抓包用的軟
  • 嘗試過myeclipse10環境下,線上安裝findbugs,插件包是能下載到指定目錄下,可是由於版本問題,findbugs插件是不能使用的。所以才有了下麵的離線安裝
  • 本文來源:https://www.dataquest.io/mission/132/data-visualization-and-exploration 本文數據來源https://github.com/fivethirtyeight/data/blob/master/college-majors/...
  • Java有Maven, Node.js有npm, ROR有gem, 這些語言的程式員在開心地使用包管理工具加速開發效率時,PHPer們還在複製粘貼的黑暗中。PHP在Composer之前,包管理的歷史不堪迴首。 在相當長的一段時間內,如果應用依賴於第三方庫,PHPer需要拷貝這些庫的源代碼, 或者通過
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...