1.定義乙個學生類(有方法)
無引數方法宣告:
- (void)dohomework;
- (返回值型別)方法名;"注意寫**的位置在哪?
無引數方法實現:
- (void)dohomework
- (返回值型別)方法名 "注意寫**的位置在哪?
2.建立物件呼叫方法
格式:[物件名 方法名];
"**如下
#import
/*student
屬性:名字,年齡,學號,成績
方法:做作業,聽**
*/@inte***ce student : nsobject
//方法的宣告
//- (返回值型別)方法名;
/*** 做作業方法的宣告
*/- (void)dohomework;
/*** 聽**方法的宣告
*/- (void)tingyinyue;
@end
@implementation student
//方法的實現
/*** 做作業方法的實現
*/- (void)dohomework
/*** 聽**方法的實現
*/- (void)tingyinyue
@end
int main(int argc, const char * argv)
```* 帶1個引數的方法的宣告實現呼叫
「定義乙個狗類,有引數的方法
1.有引數的方法的宣告
- (返回值型別)方法名:(引數型別)引數名字;
- (void)eat:(nsstring *)foodname;
2.有引數的方法的宣告
- (返回值型別)方法名:(引數型別)引數名字{}
- (void)eat:(nsstring *)foodname
//又吃又喝 方法的宣告
- (void)eatanddrink:(nsstring *)foodname :(nsstring *)drinkname;
//求兩個數的和的方法
- (int)sum:(int)num1 :(int)num2;
@end
@implementation dog
//又吃又喝 方法的實現
- (void)eatanddrink:(nsstring *)foodname :(nsstring *)drinkname
- (int)sum:(int)num1 :(int)num2
@end
int main(int argc, const char * argv)
```* 方法的命名規範
建議的方法格式:
- (返回值型別)***with***:(資料型別)引數名 and:(資料型別)引數名;
//學生類有方法: 一邊看書(需要書名) 一邊聽**(需要歌曲名)
//呼叫的時候,上面的方法的方法名字是什麼?readingwithbookname: andmusicname:
[xiaohong readingwithbookname:@」金瓶梅」 andmusicname:@」葫蘆娃」];
1.同乙個類可有 無數個物件 物件之間是毫無關係的
2.每乙個物件 都有乙份自己的成員變數,不受其他物件的影響
3.類 就像一張圖紙,物件通過圖紙製造出來的東西
「練習:
/* 定義乙個手機類,寫屬性 和方法 並且在主函式中呼叫
*/ 「**如下
#import @inte***ce phone : nsobject
//發簡訊
- (void)sendmessage:(nsstring *)message tophonenumber:(nsstring *)phonenumber;
//打**
- (void)callwithnumber:(nsstring *)phonenumber;
//看電影
- (void)lookmovie;
@end
@implementation phone
//發簡訊
- (void)sendmessage:(nsstring *)message tophonenumber:(nsstring *)phonenumber
//打**
- (void)callwithnumber:(nsstring *)phonenumber
//看電影
- (void)lookmovie
@end
int main(int argc, const char * argv)
```
1.以 "-"開頭的方法 叫做物件方法:
顧名思義:只有物件可以呼叫的方法
2.在 "-"方法內部,可以直接訪問屬性,那麼訪問的就是呼叫這個方法的物件的屬性
#import
@inte***ce
pig : nsobject
//叫:在這個方法中 喊出自己的名字 智商 和體重
- (void)bark;
@end
@implementation
pig - (void)bark
@end
int main(int argc, const
char * argv)
```* **類載入**
當我們執行程式,第一次使用某個類的時候,會把類的二進位制載入到記憶體的**段中
* **物件在記憶體中的儲存**
1.在堆區開闢儲存空間
2.在這個空間內根據存在於**段中的類的模板建立乙個類,並具有類所有的屬性,同時,也會在此空間自動加上乙個isa指標,該指標指向了存在於**段中的類,存的是位於**段中的類的位址
3.初始化成員變數的值,基本資料型別初始化為0,c的指標的預設值是null,oc的指標的預設值是nil
4.最後再將存在於堆中的物件的位址返回給宣告在棧區的指標
* **為什麼物件中只有類的屬性和isa指標**
1.在同乙個類中,不同物件所呼叫的方法都是相同的
2.在同乙個類中,不同的物件的屬性值是不一樣的
**所以物件中只儲存自身的屬性,而儲存乙個isa指標指向這個類,就是通過這個isa指標訪問物件中的方法**
* nil值
1.nil
#define nil __darwin_null
#define __darwin_null ((void *)0)
person * p1 = nil;
//讓p1不指向任何物件
2.null
# define null ((void*)0)
int * p1 = null;
//讓p1不指向任何變數
//nil和null本質是完全等價
3.如果乙個物件的指標 是 nil;
通過nil訪問物件的成員變數的時候 程式會崩潰
通過nil呼叫物件的方法的時候,什麼現象都沒有 「`
「` 1.函式是c語言的,由於oc相容c,所以可以在oc的**中定義和使用函式
2.方法是屬於oc的,只能定義在類中.
3.函式和方法定義的位置
1>函式 除了在類宣告部分不能寫,函式內部不能寫,其他任何地方都可以寫.
2>方法 宣告只能在@inte***ce的大括號外 實現只能在@implementation中
4.呼叫形式不同:
1>函式直接呼叫
2>物件方法:只能通過物件來呼叫
「` *注意點
1.@inte***ce和@implemention不能互相巢狀
2.類必須具有類的宣告和實現
3.特殊情況下,可以只有類的實現,而沒有類的宣告
4.類的宣告必須要寫在類的實現之前
5.類的方法只能通過物件來呼叫
6.在宣告類的屬性的時候不能進行初始化
7.當只有類的宣告而沒有類的實現的時候,會報乙個未能識別的方法的錯誤
8.@end不能省略
9.類的宣告必須要放在類使用之前,而類的實現可以放在類使用之後
在table中儲存nil值
在table中,nil不可以作為key,否則會有執行報錯 而且,有時候使用 獲取長度時,會因為nil而導致無法獲取到正確的長度 如下,有乙個函式,它是用來把引數進行反序,使用 獲取長度,但是長度出現了問題 function reverse local t for i 1,t 2 do local j...
獲取物件屬性值的方法
方法1 require watir ie watir ie.new ie.goto def messlg value,re x ie.text field name value to s.each do d x.unshift d end0.upto x.length 1 do t s x t sp...
C 類,物件,屬性,屬性值,方法
閒話少說,直入主題。類 是個抽象的概念,是個模子,確定物件會擁有的特徵 屬性 和行為 方法 是具有相同特徵的一組物件的抽象,類不佔記憶體。物件 看的見,摸得著,特指的,具體的,物件是類的乙個例項,物件佔記憶體。屬性 理解為一種特徵 屬性值 描述這個特徵的值。方法 物件的行為。舉例 區分類和物件 in...