匿名对象 、面向对象的三大特征、 getter ,setter方法 self的用法

OC基础day04

  • 匿名对象
  • 什么是匿名对象?
    • 创建一个对象 而不用一个指针来接收它的地址
  • 匿名对象的语法
[Person new];
[Person person];
[Person personWithName:@"张三"];
  • 匿名对象在开发中的用处
    • 特点: 匿名对象由于没有指针指向 所以只能访问一次
    • 如果一个对象 只需要使用一次 那么就可以使用匿名对象

面向对象的三大特征

  • 封装
  • 继承
  • 多态

setter方法对属性赋值做逻辑验证

  • 当一个类的属性用 @public 修饰的时候
    • 在当前类的外部可以使用 对象名->_属性 直接访问
  • 这样不能保证 赋值的数据的正确性和合理性
  • 解决方案
    • 把@public去掉,为了在类的外部 类的对象不能直接访问成员属性
    • 写一个方法 目的是可以操作成员属性
      -(void)setAge:(int)age;
      • 必须是 “ - ” 开头
      • 返回值必须是void
      • 方法名必须是set开头 去掉下划线首个字母大写的属性名
      • 必须有参数 而且参数的类型必须和要操作的属性类型一致
      • 参数名字必须是去掉下划线的属性名
  • 在类的外部通过类的对象 就不能直接操作成员属性 只能调用setter方法来访问成员属性

getter方法取到对象的属性的值

  • 把@public去掉后 类的外部 类的对象就不能获取成员属性的值了
  • 解决方案:
    • 为了在提供一个方法 来获取成员属性的值
      -(int)age;
      • 必须是一个” - “开头的方法
      • 返回值类型必须和要获取的实行的类型一致
      • 方法名 必须是去掉下划线的成员属性
      • 必须没有参数
    • 在类的外部 通过类的对象调用这个方法即可获得返回值

属性的封装规范
- 只读书封装
- 只能通过getter方法获取属性的值
- 直接getter方法 而不懈setter方法
- 只写封装
- 只能通过setter设置属性的值
- 只写setter方法 不写getter
- 就算没有任何数据处理的代码,也要对任何成员属性进行封装
“只要写一个类,类中的所有成员属性,必须要有getter或者setter方法

* 类与类之间的关系*
- 组合关系
- 对象A是有其他若干个对象组合而成的,这些对象是对象A的一个部分
- eg: 人 是由 头 脚 等类组合而成
- 依赖关系
- 类A中有一个方法需要对象B做参数, 此时对象A和对象B就是依赖关系
- 遛狗: 人依赖于狗
- 打电话 人依赖于电话
- 关联关系
- 对象A中有对象B作为属性 但是A不是有B组成的

static关键字
- C语言中 static 修饰局部变量 表示把局部变量装换成静态变量, 函数执行完毕之后函数不会被回收下次接着使用(延长局部变量的寿命, 在程序结束之后会被释放)
- C语言中 static 修饰全局变量表示这个全局变量只能在当前文件中使用
- C语言中 static 修饰函数表示这个函数只能在房钱文件中使用
- OC中 static不能修饰类的属性 也不能修饰方法

self的用法

  • 什么是self?
    • self是一个指针 保存的地址
  • self怎么用?
    • 在对象方法中 self保存的是当前对象的地址
    • 在类方法中 self保存的是当前类的地址
  • 使用场景
    • self在对象方法中
      • 如果对象方法中有和属性同名的局部变量
        • 这时候要访问当前对象的属性,必须要使用 self->成员变量名“注意 一般局部变量不要以”_”开头”
      • 如果在对象方法中要调用当前对象的其他方法 那就必须用self,
        • 格式 [self 其他方法名];
    • self在类方法中
      • 如果在类方法中需要调用当前类的其他类方法 可以使用self
        • [self/当前类名 其他类方法名];
      • 如果在类方法中 要创建对象 可以使用self
        -[self/当前类名 new];

* 小知识点*
如何找出一个类在内存中存放的首地址
- 找一个这个类的对象 调试查看isa指针
- 在这个类的类方法,打印self
- 找一个这个类的对象 调用[对象名 class]方法
- 直接调用者个类的[类名 class]方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值