OC自学的第二天

OC类的三大特性:


  • 封装
  • 继承
  • 多态

目录

1. 封装

  • set方法
    • 作用:
      提供一个方法给外界设置成员变量值 ,可以在方法里面对参数进行过滤
    • 命名规范:
      1>方法名必须以set开头
      2>set后面的跟上成员变量的名称,成员变量的首字母必须大写
      3>set方法返回值一定时void
      4>一定要接受一个参数,参数类型和成员变量的类型一致
      5>形参的名称不能和成员变量名一样
  • get方法
    • 作用:
      返回对象内部的成员变量
    • 命名规范:
      1>肯定有返回值,返回值类型肯定与成员变量类型一致
      2>方法名和成员变量名一致
      3>不需要接受任何参数
  • 成员变量:

    • 作用:
      1>让成员变量和get方法的名称区分开
      2>可以跟局部变量区分开,一看下划线开头的变量,一般都是成员变量
  • 对象方法命名规范:

    • 减号 - 开头
    • 只能由对象调用
    • 对象方法可以访问当前对象的成员变量(实例变量)
  • 类方法:
    • 命名规范:
      1>加号 + 加号
      2>只能由类(名)来调用
      3>类方法中不能访问成员变量(实例变量)
    • 类方法的好处
      1>不依赖于对象,执行效率高
      2>能用类方法尽量用类方法
    • 场合:
      当刚内部不需要使用成员变量时,就可以改为类方法
    • 可以允许类方法和对象方法同名
  • self:
  • 谁调用了当前方法,self就代表谁
    1·self出现在对象方法中,self就代表对象
    2·self出现在类方法中,self就代表类

  • 可以利用self->成员变量名“访问当前对象内部的成员变量”

  • [self 方法名]可以调用其他对象方法\类方法

    2.继承

  • 继承的好处

    • 抽取重复代码
    • 建立了类之间的关系
    • 子类可以拥有父类中的所有成员变量和方法
  • 注意点:

    • 基本上所有类的根类是NSObject
    • 父类要写在前面
    • 不允许子类和父类拥有相同名称的成员变量
    • 调用某个对象的方法时,优先去当前对象中找,如果找不到就去父类中找
  • 重写:

    • 子类重新实现父类中的某个某个方法,覆盖父类以前的方法
  • 继承的坏处:

    • 代码耦合性太强
  • 继承的使用场合:

    • 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
    • 当A类拥有B类中的部分属性和方法时,就可以考虑让B类继承A类
  • super的作用

    • 直接调用父类中的某个方法
    • super处在对象方法中,那么就会调用父类中对象方法,super处在类方法中,那么就会调用父类中的类方法
    • 使用场合:
      子类重写服父类的方法时想保留父类方法

3. 多态

  • 没有继承就没有多态
  • 代码体现:
    • 父类类型的指针指向子类对象
  • 好处:
    • 如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
  • 局限性
    • 父类类型的变量不能直接调用子类特有的方法.必须强转为子类类型变量后,才能用子类特有的方法

成员变量的作用域

  • @public
    • 在任何地方都能直接访问对象的成员变量
  • @private
    • 只能在当前类的对象方法中访问(@implementation中默认是@private)
    • 虽然不能直接访问但是子类在继承父类的时候还是有私有的成员变量的。可以通过get和set调用
  • @portected
    • 能在当前类和子类的对象方法中直接访问(@interface中默认是@protected)
  • @package
    • 只要处在同一个框架中,就能直接访问对象的成员变量
  • 注意:
    • @implementation也能写成员变量但是成员变量名不能和@interface中一样,但是是私有的,绝对的私有

点语法

  • 为了方便其他语言的使用者能快速学习OC语言,OC语言也提供了点方法

  • OC的点方法和其他语言不同,调用的不是成员变量,而是getter和setter方法

  • 前提:需要有getter和setter
  • 作用范围:只能用在getter和setter中
  • p.age = 10 <===> [p setAge:10]
  • p.age <===> [p age]

只要有赋值的,默认调用的是setter
只是调用的,默认调用的是getter

基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值