Objective-C之類的三大特性:封裝,繼承,多態(1)
我們都知道,物件導向程式設計中的類有三大特性:繼承,封裝,多態,這個也是介紹類的時候,必須提到的話題,那麼今天就來看一下OC中類的三大特性:
一、封裝
封裝就是對類中的一些欄位,方法進行保護,不被外界所訪問到,有一種許可權的控制功能,Java中有四種存取權限修飾符:
public,default,protected,private
存取權限依次遞減,這樣我們在定義類的時候,哪些欄位和方法不想暴露出去,哪些欄位和方法可以暴露,可以通過修飾符來完成,這就是封裝,下面來看一個例子吧:
Car.h
// Car.h // 05_ObjectDemo // // Created by jiangwei on 14-10-11. // Copyright (c) 2014年 jiangwei. All rights reserved. // #import @interface Car : NSObject{ //這個屬性就是對外進行保密的相當於private,所以我們需要在外部存取的話,必須定義get/set方法 //預設的是private的,但是我們可以使用@public設定為public屬性的,那麼在外部可以直接存取:person->capcity = 2.8; //當然我們一般不這麼使用,因為這會破壞封裝性,這種用法相當於C中的結構體中許可權 //一共四種:@public,@protected,@private,@package,這個和Java中是相同的 @public float _capcity; //油量屬性 } - (void)run:(float)t; @end
這裡我們可以看到,OC中也是有四種存取權限修飾符:
@public、@protected、@private、@package
其中預設的修飾符是@private
但是這裡要注意的是:OC中的方法是沒有修飾符的概念的,這個和Java有很大的區別,一般都是公開訪問的,即public的,但是我們怎麼做到讓OC中的一個方法不能被外界訪問呢?
OC中是這麼做的,如果想讓一個方法不被外界訪問的話,只需要在.m檔案中實現這個方法,不要在標頭檔中進行定義,說白了就是:該方法有實現,沒定義,這樣外界在匯入標頭檔的時候,是沒有這個方法的,但是這個方法我們可以在自己的.m檔案中進行使用。
為什麼要介紹這點知識呢?因為在後面我們會說到單利模式,到時候就會用到這個知識點了。