类和对象, 实例变量可见度, 自定义初始化

/* 1.类和对象 */


/******定义类*******/ 

        

 1.新建文件, 自动生成.h .m两个文件

 2. .h接口部分

 3. .m实现部分

    

创建一个Person类

Person.h

/*********声明特征( 实例变量 )***********/
{
    
    @public
    //姓名  字符串
    /* 1. NSString 表示字符串, C语言中 char str[10]
       2. 实例变量前面必须加下划线 _ 
       3. NSInteger 表示整形
    */
    NSString *_name;
   
    //性别
    
    NSString *_sex;
 
    //年龄
    
    NSInteger _age;
}


/*********声明行为( 方法 )***********/

/* 1. - 横线开头 加空格
   2. 以 ; 分号 结尾
*/

- (void)sayHello;

- (void)info;

Person.m

/*  实现方法  */
/* 1. 方法后面没有分号 ;
   2. NSLog 
   3. @ OC 对 C语言的扩展
*/

- (void)sayHello
{
    NSLog(@"Hello");
}

- (void)info
{
    NSLog(@"姓名:%@, 性别:%@, 年龄:%ld", _name, _sex, _age);
}


main.m


/********创建对象**********/

 1. 导入.h文件

 2. 分配内存

 3. 初始化


/* 1. alloc 系统提供的方法作用:分配内存

2. 指针表示对象的首地址, OC用指针代指对象

3. init 系统提供的方法作用初始化

4. 分配内存和初始化连写

*/


        Person *person1 = [Person alloc];
        
        person1 = [person1 init];
        
        //连写
        Person *person2 = [[Person alloc] init];

/*********** 使用对象 ***********/

        [person1 sayHello];
        
        [person1 info];



/**********实例变量操作**********/

        

/***实例变量的赋值***/

        /* @public 成员变量用-> 进行赋值 */

        person1 -> _name = @"Tom";
        person1 -> _age = 20;
        person1 -> _sex = @"男";             


/***实例变量的取值****/        

        NSLog(@"姓名:%@", person1 -> _name);

       

总结:


1. 对象: 一个类的指针变量(指针类的实例变量)


2. 实例变量 : 已经初始化过后的变量


3. 成员变量 : { } 里面写的


4. id : 任意类型的指针变量


5. instancetype : 实例变量类型


6. .h 里写@class 来声明  , 可以是不存在的类,  

    .m 里写 #import  是拷贝代码, 真实存在的 (重复的不引用)


7. 方法 三要素 : 返回值类型, 方法名, 形参

    形参 : 公共的可变(内容是可变的)的变量


8.  - : 实例化方法(对象方法) 

     +: 类方法


9. 类方法什么时候调用 :  

    (1) 当前方法中没有用到当前类的所有内容(成员变量, 属性)      

    (2) 简化代码 (可以把成员变量和属性 变成形参传进来)


10. 调用方法步骤:  

     (1) 先看这个方法属于哪个类的   

     (2) 看方法是什么类型的(实例化方法, 类方法)

     (3) 看返回值类型


11. 封装需要考虑的问题 : 最开始的时候是否忘记赋值 ; 使用时能否进行二次修改

      (1)必须给定的变量 (调用初始化方法)    

      (2)给使用者安全 (提供尽量少的接口 : 属性, 方法)     

      (3)简化代码 (重复性强)


/* 2. 实例变量可见度 */

成员变量可见度有3:


1.@public类的外部和内部都可以访问的

2.@protected受保护的, 外部不能访问, 内部可以访问

3.@private私有的, 外部不能访问, 内部可以访问, 但是子类不能访问

默认是@protected 受保护的


/*对于@protected修饰实例变量, 外部不能直接访问,提供两个方法, 赋值方法,取值方法 */



创建一个Student类

Student.h

{
    @protected
    NSString *_hobby;
    NSInteger _age;
}


/* 赋值方法 */
/* 1. set 开头
   2. 无返回值
*/

- (void)setHobby:(NSString *)hobby;

- (void)setAge:(NSInteger)age;

/** 多个参数赋值方法 **/
// 参数形容词 age
// 参数类型
// 参数名

- (void)setAge:(NSInteger)age hobby:(NSString *)hobby;


/* 取值方法 */
/* 1. 带有一个返回值的无参数的方法
   2. OC中 只能带一个返回值
*/
// 返回值类型
//参数

- (NSString *)hobby;

- (NSInteger)age;


Student.m


- (void)setHobby:(NSString *)hobby
{
    _hobby = hobby;
    
}

- (void)setAge:(NSInteger)age
{
    _age = age;
}


- (NSString *)hobby
{
    return _hobby;
}

- (NSInteger)age
{
    return  _age;
}


main.m


        Student *stu = [[Student alloc]init];
        
       // 赋值方法
        [stu setHobby:@"游泳"];        
       // 取值方法
        [stu hobby];
        NSLog(@"爱好: %@", [p1 hobby]);
        
        // 赋值
        [stu setAge:20];
        //取值方法
        NSLog(@"年龄: %lu", [p1 age]);


/* 3. 自定义初始化   * /

Student.h


- (id)initWithHobby:(NSString *)hobby
                age:(NSInteger)age;


Student.m

- (id)initWithHobby:(NSString *)hobby
                age:(NSInteger)age            
{
    _hobby = hobby;
    _age = age;
    
    return self;
}

main.m


        Student *stu1 = [[Student alloc]initWithHobby:@"Running" age:18];


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值