A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhao543 中级黑马   /  2017-6-12 23:18  /  999 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

********************oc基础*********************

1,类和对象
    类:一类事物的特征和行为的抽象(模板)
    对象:满足类的特征的一个个体 (模板创建出来的对象)
    举例:
    汽车图纸----类
    根据汽车图纸造出来的车----对象


2,面向过程与面向对象的区别
    面向过程:完成一件事情,需要哪些步骤
    面向对象:完成一个事情,需要多少个对象来做

    面像对象:就是我们要找对象,找不同的对象,找合适的对象,帮你去做你应该做的事情
    面向过程:是啥事都要自己干!


3,HMPerson *p1 = [HMPerson new];后面的[HMPerson new]做了哪些事情
    new做了4件事
    1,申请空间
    2,创建对象
    3,初始化属性
    4,返回地址



4,#import和#include的区别
    相同点: 都是预处理指令,都是将指定的文件的内容拷贝到写指令的地方
    不同点: #import可以防止重复包含


5.对象和类方法的区别
    对象:以减号开头
    只可以被对象调用,可以访问成员变量
    类:以加号开头
    只能用类名调用,对象不可以调用
    类方法不能访问成员变量


6.方法和函数的异同
    1)相同点:
        1>方法和函数都是为了实现某一个功能
        2>方法和函数不调用,都不会起作用

    2)不同点:
        1>语法不同
        2>定义的位置不同
        3>归属感不同
        4>调用形式不同

7.什么是匿名对象?
    我们创建一个对象,但是并没有用指针去存储这个对象的地址。(或者直接说没有名字的对象,也对)


8.self 与 super区别
    self代表当前方法的调用者
        在对象方法中,调用的就是当前对象的对象方法
        在类方法中,调用的就是当前类的类方法
    super代表父类
        在对象方法中,调用的就是父类的对象方法
        在类方法中,调用的就是父类的类方法


9.实现多态的3个前提条件
    1,继承关系
    2,方法的重写
    3,父类的指针指向子类对象


10.私有属性和方法
    1. 私有属性
    被@private修饰的属性,叫做私有属性.

    2,真私有属性
    将属性定义在我们的@implementation中,那么它就是真的私有属性了。

    3.私有方法.
    方法只写实现,不写声明. 那么这个方法就是1个私有方法,只能在类的内部调用.



11,instancetype 和id 的区别与联系
    instancetype 只能作为方法的返回值。可以自动检测返回值和接收类型是否一致.
    id既可以做为返回值使用,也可以定义变量或者作为方法的参数


12,面向对象设计三个主要特征:
封装,继承,多态
    1)封装的好处:
    将变化隔离。(不管里面怎么变,使用者不需要知道)
    便于使用。(使用者只需按照一定的方法使用就可以了)
    提高重用性。(任何人都可以对已封装好的功能进行操作)
    提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)

    2)继承  子类拥有了父类的所有属性和方法
    3)多态  父类的指针指向了子类的对象(如果存在多态,父类就可以访问子类的特有方法;如果不存在多态,父类就不可以访问子类的特有方法)



13.实例变量的修饰符 作用范围
    @puplic (公开的) 作用于当前类
    @protected  (受保护的) 作用于当前类,子类(派生类)
    @private (私有的)作用于当前类
    @package (框架级别的)  作用于框架级别的


14,点语法
    使用点语法的前提:首先得先有 get和set方法
    点语法实质:调用get和set方法


15.@proprety增强做的三件事
    1)在.h文件中帮我们自动生成get和set方法声明
    2)在.m文件中帮我们生成私有的实例变量(前提是没有在.h文件中没有手动生成)
    3)在.m文件中帮我们是实现get和set方法的



16.只读封装:属性的封装只有getter 没有setter
    只能调用getter方法取值.不能调用setter方法赋值. 因为没有setter方法

17.只写封装:属性的封装只有setter 没有getter
只能调用setter方法赋值.不能调用getter方法取值.因为没有getter方法



18.类与类之间的关系
    1. 组合关系
    2. 依赖关系
    3. 关联关系
    4. 继承关系(这个加不加都没事!!!)


19,oc中self的作用
    谁调用当前方法,self就代表谁
    self在对象方法中,self代表当前对象
    self在类方法中,self代表当前类



20,oc中如何自定义打印的类型,比方打印一个对象,可以把它的所有属性输出
重写系统的description,就可以打印出自己想要的东西



21,动态类型和静态类型
1). 静态类型: 指针指向的对象是1个本类对象
HMPerson *p1 = [HMPerson new];
2). 动态类型: 指针指向的不是1个本类对象
HMPerson *p1 = [HMStudent new];


22,什么是构造方法?
用来给对象的实例变量初始化的方法就是构造方法(init方法)




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马