类的封装 self语法 继承

这篇博客主要探讨了iOS开发中类的对象与方法的封装,强调了即使没有数据处理,也应该为成员属性提供getter或setter方法。文章详细解释了self的概念,指出self是一个指向当前对象的指针,在对象方法中用于访问属性和调用其他方法。同时,介绍了C语言中static关键字的不同作用,并提到了iOS中类的单继承特性和属性的传递性。
摘要由CSDN通过智能技术生成

IOS学习第20天

类的对象与方法

  • 匿名对象
1.什么是匿名对象
    创建一个对象 而不用一个指针来接受它的地址

2.匿名对象的语法
    [Person new];
    [Person person];
    [Person personWithName:@"张三"];
    [Person personWithName:@"张三" andAge:18];

3.匿名对象的在开发过程中什么时候使用
    1>特点:匿名对象由于没有指针指向,所以只能访问一次

    2>如果一个对象 只需要使用一个次 那么就可以使用匿名对象
    ```

###封装

* 使用setter方法来对属性赋值做逻辑验证

1.当一个类的属性用@public修饰的时候
在当前类的外部可以用 对象名->_属性 直接访问属性

“这样就不能保证 赋值的时候数据的正确性和合理性

2.解决方案:

1>把@public去掉,为了在类的外部 类的对象不能直接访问成员属性
2>写一个方法,目的是可以操作成员属性
    - (void)setAge:(int)age;
    1)必须是 "-" 开头
    2)返回值必须是void
    3)方法名必须是set开头 + 去掉下划线首个字母大写的属性名
    4)必须有参数,而且参数的类型必须和要操作的属性类型一致
    5)参数名字必须是去掉下划线的属性名
3>在类的外部,通过类的对象 就不能直接操作成员属性,只能通过调用setter方法来访问属性的值
```
  • getter方法取到对象的属性的值
1.把@public去掉后,在类的外部 类的对象就不能获取成员属性的值了


2.解决方案:
    1>为类在提供一个方法 来获取成员属性的值
    - (int)age;
    1)必须是一个"-"开头的方法
    2)返回值类型必须和要获取的属性的类型一致
    3)方法名 必须是 去掉下划线的成员属性
    4)必须木有参数


    2>在类的外部,通过类的对象调用这个方法即可获取返回值
    ```

* **属性封装的规范**

1.只读封装
只能通过getter方法获取属性的值
只写getter方法 而不写setter方法

2.只写封装
只能通过setter方法设置属性的值
只写setter方法 而不写getter方法
3.我们刚刚说了半天封装
苹果官方的规范:
就算没有任何数据处理的代码,也要对任何成员属性进行封装
“只要写一个类,类中的所有成员属性,必须要有getter或者setter方法


* static

1.C语言中static修饰局部变量表示把局部变量转换成静态变量,函数执行完毕局部变量不被回收下次接着用
2.C语言中static修饰全局变量表示这个全局变量只能在当前文件中使用
3.C语言中static修饰函数表示这个函数只能在当前文件中使用
4.OC中static不能修饰类的属性也不能修饰方法.


* **self的用法**

1.self是什么?
self是一个指针,保存的地址

2.self怎么用?
1>在对象方法中 self保存的是当前对象的地址

2>在类方法中,self保存是 当前类在代码段中的首地址

3.使用场景
1>self在对象方法中
a.如果对象方法中有和属性同名的局部变量,
这时候要访问当前对象的属性,必须要使用 self->成员变量名”注意:一般局部变量不要以”_”开头
b.如果在对象方法中要调用当前对象的其他方法,那必须用self,
格式:[self 其他方法名];

2>self在类方法中
    如果在类方法中需要调用当前类的其他类方法 可以使用self
        [self/当前类名 其他类方法名];
    如果在类方法中 要创建对象 可以使用self
        [self/当前类名 new]
"注意:self不能作为类型来使用

“小知识点
如何找出 一个类在内存中存放的首地址?
1)找一个这个类的对象 调式查看isa指针
2)在这个类的类方法,打印self
3)找一个这个类的对象 调用[对象名 class]方法
4)直接调用这个类的 [类名 class]方法


###继承

**继承是类在继承而不是对象在继承**

**父类对象与子类对象是毫无关系的**

* **什么时候应该用继承**

1.当发现A类中的成员,B类也有,就让B类继承A类

2.继承需要合理:**必须满足is a关系的两个类才能继承**

* OC继承的特点

1.单根性/单继承性,OC中一个类只能有一个父类
2.传递性,类C继承自类B,类B继承自类A,那么类C拥有类A的所有属性方法(即子类拥有父类和父类的父类的所有属性和方法)
“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值