学习面相对象编程心得体会

对象方法怎么写 

-(返回值类型)方法名:(参数类型)参数名;

-(void)setName:(NSString *)name;

-代表对象(void)代表返回值类型 setName代表方法名 : (NSString *)代表参数类型 name 代表参数名 ; 结尾

创建一个类的整体思路

1.创建一个类 生成.h 和.m文件 .h  代表接口文件  .m 代表实现文件

2.在.h文件里写类属性(成员变量) 在大括号里的表示类属性 

3.声明 类属性值的方法 一个是设置的 一个是获取的 

4.实现 在.m 文件实现 实现接口文件里面的所有声明的方法

5.实例化 在main.m里实例化一个对象 

首先 引入要实例化类的头文件 

然后 实例化一个对象 类名 *对象名 =[[类名 alloc]init]; 

 再设置对象属性 通过调用方法去设置 在OC里调用方法是中辍符

 调用方法去设置 例如 [ 对象名字 设置的方法 : ];分号结尾

//

//  main.m

//  复习面向对象编程

//

//  Created by 非凡 程序员 on 15/10/28.

//  Copyright (c) 2015 非凡 程序员. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Father.h"

#import "Son.h"

#import "daughter.h"


int main(int argc, const char * argv[]) {

    

    //OC 类包含:类属性 、方法

    //OC 方法包括:类方法、对象方法

    //类方法以+ 号开头, 对象方法以 - 号开头

    //类方法可以通过类直接调用,对象方法通过类的实例化后调用

    //对象:类的实例化

    //类的实例化写法:[[类名 alloc]init];  [类名 new];

    

    //main函数里使用其他类,需要先#import这个类的头文件。

    //注意:.h 为头文件 接口文件 .m 为实现的文件

    //.h interface  .m implementation

    

    //类的实例化 举例:

    Father *father = [[Father alloc]init];

    

    //在该Father类里创建一个Name属性,通常会再Father.ht添加

    father.name = @"" ;//方法一 点语法设置

    [father setName:@"jack"]; //方法二 中辍符设置

    //返回一个方法

    //NSLog(@"father name is : %@", father.name );

    NSLog(@"father name is : %@", [father name]);

    

    //实例化Son

    Son *son = [[Son alloc]init];

    //因为Son类继承了Father,因此可以使用Father类属性

    son.name = @"peter";

    //打印son的名字

    NSLog(@"son name is : %@", son.name );

    

    //调用类方法 直接通过类去调用

    //注意是Father 不是Father对象

    [Father echoLog];

    

    // ------- 多态: 父类的指针指向子类的对象

    //实例化Son

    Son *sonI = [[Son alloc]init];

    //多态的思想 需要用父类指针

    Father *fatherI = sonI;

    //实例化一个Father对象

    Father *jack = [[Father alloc]init];

    [jack cry];

    //子类如果自己有cry优先调用自己类的cry对象方法

    [fatherI cry];

    

    // -------- 复合: 对象之间的组合

    //参考写法:一个类里有多个对象类型类属性

    

    //先实例化至少2个对象

    Son *xiaoMing = [[Son alloc]init];

    xiaoMing.name = @"xiaoMing";

    

    daughter *xiaoHong = [[daughter alloc]init];

    xiaoHong.name = @"xiaoHong";

    

    //实例化Father对象

    Father *daDa = [[Father alloc]init];

    daDa.name = @"xiDaDa";

    

    //因为Father里面有son daughter类型的类属性,因此需要把sondaughter对象传值组合在一起,这样叫做对象之间的组合叫复合。

    daDa.son = xiaoMing;

    daDa.daughter = xiaoHong;

    

    Son *xiaoQiang=[[Son alloc]init];

    daughter *xiaoHua=[[daughter alloc]init];

    xiaoQiang.name=@"xiaoQiang";

    xiaoHua.name=@"xiaoHua";

    

    daDa.sonII=xiaoQiang;

    daDa.daughterII=xiaoHua;

    

    NSLog( @"%@ 2个儿子,2个女儿,儿子的名字是%@ %@, 女儿的名字是 %@ %@", daDa.name, daDa.son.name , daDa.daughter.name ,daDa.sonII.name,daDa.daughterII.name);

    

    

    

    //----------------复习数据类型---------------

    

//    c的基本类型:int float double char bool

    bool cBool=true;

    printf("cBool:%d\n",cBool);

//    OC的数据类型

    //布尔类型,值为YESNO

    BOOL _bool = NO;

    NSLog(@"OC:%d",_bool);


    //字符串类型----不可变字符串

    NSString *string = @"123";

    NSLog(@"string:%@",string);

    NSLog(@"%lu",[string length]);//lengthNSString的对象方法。可以返回字符串的长度

    NSString *stringI=@"hello";

//    比较两个字符串的大小

    if ([string isEqualToString:stringI]) {

        NSLog(@"相同");

    }else {

        NSLog(@"不同");

    }

    NSString *stringII=[stringI uppercaseString];//将小写字母转换为大写

    NSString *stringIII=[stringII capitalizedString];//将字符串转化为首字母大写,其他为小写的形式

    NSLog(@"%@",[stringII lowercaseString]);//lowercaseString将字符串转换为小写

//    定义一个范围

    NSRange rage=NSMakeRange(0, 1);

    

    NSLog(@"%@",[stringII substringFromIndex:1]);//按位置截取字符串的内容,返回新的字符串

    

    //找到字符串的位置---

    NSRange range=[stringII rangeOfString:@"LL"];

    NSLog(@"location:%li,length:%li",range.location,range.length);

    //可变字符串

    NSMutableString *muString=[[NSMutableString alloc]initWithCapacity:10];

    [muString appendString:stringII];//在原本字符串后增加,新增


    NSLog(@"muString :%@",[muString substringWithRange:range]);//按范围截取字符串

    [muString deleteCharactersInRange:range];//将原本的字符串进行删除,不返回新字符串,删除

    NSLog(@"%@",muString);//截取之后的新字符串

    //数字转化字符串

    int i=10;

    NSString *str=[NSString stringWithFormat:@"%i",i];

  

    NSLog(@"String :%@",str);

//    字符串转换数字

    int stringNum=[str intValue];

    NSLog(@"int Number:%i",stringNum);

    

    

    //总结:不可变字符串的方法:长度,比较,截取,大小写相互转化

//    不可变字符串:增加,查找,删除

    

    

    //------数组-----数组不能存放数字,但是转化为NSNumber的对象类型就可以存入

//    不可变数组NSArray,

    NSArray *array=@[@1,@2,@3];

    NSLog(@"%@",array[2]);

    

    //可变数组NSMutableArray

    NSMutableArray *muArray=[[NSMutableArray alloc]initWithCapacity:10];//定义一个可变数组给一个初始空间

    NSMutableArray *muarray=[NSMutableArray array];//定义一个可变数组给一个空数组

    NSMutableArray *mutableArr=[[NSMutableArray alloc]initWithArray:array];//定义一个可变数组,给一个不可变数组

    

    NSLog(@"%@",mutableArr);

    

    

    [mutableArr addObject:@"hello"];//可变数组增加对象

    NSLog(@"%@",mutableArr);

    [mutableArr removeObject:@1];//可变数组删除对象

    NSLog(@"%@",mutableArr);

    


    


    

    return 0;

}


你可能感兴趣的:(学习面相对象编程心得体会)