5. 14 Objective-C 类与对象,成员变量

  1. OC学习目录:

    1. 类,对象 

    2. 继承,多态,方法 

    3. NSStringNSValueNSNumber 

    4. 属性 

    5. 集合 

    6. 内存管理 

    7. 设计模式,引用传值 

    8. 类目,延展,协议 

    9. 综合应用


    1. API, Cocoa & Cocoa Touch 

    2. NSString,  Collection 

    3. 类与对象,实例变量 

    4. 面向过程 VS 面向对象 



    1. 的作用 

     

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

        @autoreleasepool //区分关键字 

         

        { 

             

            @"abc"  //格式化字符串,转变为字符串对象 

            @[@"1"] //格式化便利构造对象 

            @0      //格式化便利构造对象 

             

             

            NSLog(@"Hello, World!"); 

        } 

        return 0; 

    } 

     

    1. NSLog 函数 

     

         NSLog(@"Hello, World!");    //NSLog  可以加时间戳,可以自动换行,但是NSLog执行效率不高 

     

     

    //如何输出对象 

            NSString *string = @"abc"; 

            NSArray *array = @[@"a",@"b"]; 

            NSNumber *number = @10;     //不能直接写10这个数数不是对象 

             

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

            NSLog(@"array = %@", array); 

            NSLog(@"number = %@", number); 

     

    1. 头文件 

     

       使用< > " "的区别 

     

       < > 表示要导入一个库 

       " " 表示要导入自定义文件 

     

    1. 初始化方法  

    //对象的初始化(复写了系统的init方法,如果一个类本身有init方法,那么优先调用这个类的init方法,而不是去调用其父类的init方法) 

    - (instancetype)init 

    { 

        //让父类初始化一个实例对象 

        self = [super init]; 

        //如果创建成功 

        if (self) { 

            //完成所有初始值 

            age = 10; 

            name = @"Input name"; 

            computer = [[Computer allocinit]; 

        } 

        return self; 

    } 

     

    1. 创建对象 

    //创建一个对象 

    Person *person = [[Person allocinit]; 

     

    //id表示泛型(少用) 

    id person1 = [[Person alloc] init]; 

    NSObject *person2 = [[Person alloc] init];  //NSObject *可以写成id 

     

    //输出对象 

    NSLog(@"%@", person); 

     

     

    1. 成员变量 

     

    成员变量必须包含在大括号中 
    注意成员变量不声明任何关键字的话是默认可访问性@Protected 
    注意在ObjC中不管是自定义的类还是系统类对象都必须是一个指针,例如下面的name 
      

    { 

         

    @private 

        NSString *name; 

        int age; 

    @protected 

        NSString *nation; 

    @public 

        float height; 

     

    } 

     

     

    @private  私有成员,只有当前类可以访问 

    @protected 受保护成员,只有当前类或子类可以访问(如果没有添加任何修饰则默认为   

               @protected 

    @public   公共成员,所有类均可访问 

     


    新创建一个工程: 

    1新创建一个Student类,该类中包含几个成员变量(姓名name,性别gender,年龄age,身份证号code,电话号phoneNumber 

    2使用init方法给每个成员变量赋值 

    3自定义一个方法,打印输出该学生的爱好; 

     

    在同一个工程中实现: 

    1、新创建一个Teacher类,该类中包含几个成员变量(姓名name,授课课程teach, 

    2、给Teacher类增加一个Student类的成员变量 

    3、完成所有成员变量的赋值 

     

     

    研究性知识点: 

    1、交叉引用 

    2、了解成员变量放在.m文件时的作用和它更加深入的意义用法


    <main.c> 

    #import <Foundation/Foundation.h> 

    #import "Student.h" 

    #import "Teacher.h" 

     

     

     

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

        @autoreleasepool { 

             

            //创建一个Student类的对象 

            Student *newStudent = [[Student allocinit]; 

             

            //打印输出学生兴趣 

            [newStudent printHobby]; 

             

            //创建一个Teacher类的对象 

            Teacher *newTeacher = [[Teacher allocinit]; 

             

            //设置newTeacher的姓名,课程 

            [newTeacher setTeacherName:@"Mr.Wang"]; 

            [newTeacher setCourse@"Objective-C"]; 

             

            //打印老师信息 

            [newTeacher printTeacher]; 

        

             

        } 

        return 0; 

    } 


    <Student.h> 

    #import <Foundation/Foundation.h> 

     

    @interface Student : NSObject 

     

    /** 

     *  1 新创建一个Student类,该类中包含几个成员变量 

     * (姓名name,性别gender,年龄age,身份证号code,电话号phoneNumber 

     */ 

     

    { 

        NSString *name; 

        NSString *gender; 

        NSInteger age; 

        NSInteger codeID; 

        NSInteger phoneNumber; 

    } 

     

     

    - (instancetype)init; 

    - (void)printHobby; 

    - (void)printStudent; 

     

    @end 

     

    <Student.m>

    #import "Student.h" 

     

    @implementation Student 

     

    /** 

     *  2 使用init方法给每个成员变量赋值 

     */ 

     

     

    - (instancetype)init 

    { 

        self = [super init]; 

        if (self) { 

            name = @"Dong Tao"; 

            gender = @"Male"; 

            age = 20; 

            codeID = 510726198810030016; 

            phoneNumber = 13778204000; 

        } 

        return self; 

    } 

     

    /** 

     *  自定义一个方法,打印输出该学生的爱好; 

     */ 

     

    - (void)printHobby { 

        NSLog(@"I love swimming."); 

    } 

     

    /** 

     *  打印学生信息 

     */ 

     

    - (void)printStudent { 

         

        NSLog(@"name = %@"name); 

        NSLog(@"Gender = %@"gender); 

        NSLog(@"Age = %ld", (long)age); 

        NSLog(@"ID = %ld", (long)codeID); 

        NSLog(@"Phone Number = %ld", (long)phoneNumber); 

         

    } 

     

     

    @end 

     

    <Teacher.h> 

     

    #import <Foundation/Foundation.h> 

    #import "Student.h" 

     

    @interface Teacher : NSObject 

     

     

    /* 

     *  1、新创建一个Teacher类,该类中包含几个成员变量(姓名name,授课课程teach, 

     *  2、给Teacher类增加一个Student类的成员变量 

     */ 

     

    { 

        NSString *teacherName; 

        NSString *teacherCourse; 

        Student *myStudent; 

    } 

     

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

    -(void)setCourse: (NSString *) course; 

    -(NSString *)teacherName; 

    -(NSString *)Course; 

    -(void)printTeacher; 

     

    @end 

     

    <Teacher.m> 

     

    #import "Teacher.h" 

    #import "Student.h" 

     

    @implementation Teacher 

     

     

    -(void)setTeacherName: (NSString *) name { 

         

        teacherName = name; 

    } 

     

    -(void)setCourse: (NSString *) course { 

         

        teacherCourse = course; 

    } 

     

    -(NSString *)teacherName { 

         

        return teacherName; 

    } 

     

    -(NSString *)Course { 

         

        return teacherCourse; 

    } 


    -(void)printTeacher { 

         

        NSLog(@"%@ teaches %@"teacherNameteacherCourse); 

        myStudent = [[Student allocinit]; 

        [myStudent printStudent]; 

         

    } 

     

    @end 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值