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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1,我们之前创建对象的做法
    Person *p1 = [Person new];
    让一个指针指向一个对象 这个指针就叫做这个对象的名字


2,匿名对象
    就是没有名字的对象
    [Person new]
    没有指针指向这个对象 这个对象就叫做匿名对象


3,如何去使用一个匿名对象呢
    [Person new]->_name = @"jack";
    [[Person new] sayHi];
    因为new实际上1个类方法,这个方法做的事情创建对象(4个步骤)
    [Person new]这句话的结果就是这个匿名对象的地址,可以直接使用。


4,注意点

    1),匿名对象只能使用一次
        下一次再[Person new]的话是一个新的匿名对象

    2),每次创建的匿名对象都是不同的对象


5,匿名对象什么时候使用

    如果你发现某个对象的成员只会被我们使用一次 以后再也不需要使用的时候
    就可以使用匿名对象

    如果方法的参数是一个对象,而调用者为这个参数赋值的时候
    就是专门来给这个方法传递的 并且这个对象调用者不会使用 这个时候就可以使用匿名对象
    God *god = [God new];
    [god killWithPerson :[Person new]];



1,面向对象的三大特征是什么?

    封装:
        函数就是一个封装的体现
        类就是更高级的封装,将数据和行为封装为了一个整体
        好处:
        a,屏蔽内部的实现,
            外部不需要知道内部是如何实现的 只需要知道这个对象有什么用
        b,方便操作
        c,后期的维护十分便利

    继承:

    多态:


2,存在的问题

    就是为对象的属性赋值的时候 语法上其实只要数据的类型是属性的类型就可以
    但是,情理上这么做是不合的

    就像Person对象有1个int类型的属性_age 表示一个人的年龄
    为这个对象的_age属性赋值的时候 其实只要int类型都可以
    但是 正常情况只会在0-200之间

    解决:
    在为对象的属性赋值的时候 ,我希望将这个数据做一个逻辑验证
    如果符合 就赋值 否则 就做默认处理


3,如何实现? setter

    1),不能写@public
        否则 外界就能直接访问这个属性
        外界一旦可以访问,就可以任意赋值。

    2),再提供一个赋值方法
        a,这个方法一定是一个对象方法,因为要为属性赋值
        b,没有返回值
        c,方法名必须以set开头 跟上去掉下划线首字母大写的属性名
        d,这个方法一定是有参数的, 参数的类型与属性的类型一致
        e,再在方法的实现中,判断传入的数据是否符合逻辑


4,getter

    1),是一个对象方法
    2),这个方法有和要拿的属性一样的返回值 没有参数
    3),方法名是属性名去掉下划线
    4),方法的实现就是直接返回属性的值。


1 个回复

倒序浏览
大爱无疆,呵呵,手下 了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马