OC基础day4-继承,self,super,多态,类对象,SEL类型,description,私有方法与私有变量,三种访问限制

self 

OC中的关键字,没有@符号,指代当前对象,即谁调用它,它指代谁。在类方法中,self等于类

继承格式:声明时@interface 类名 父类而不是NSObject @end

基类继承父类,获得父类的所有属性和方法,但私有属性不能直接使用不过可以继承

重写方法时只需直接实现即可,则调用的就是子类的。

单继承,一个子类只能有一个父类。

super关键字,表示父类对象,调用父类的属性或方法

子类不可以定义一个和父类同名的属性,但可以重写方法

self不能调用当前的方法,否则会陷入死循环。


@public可以被所有人访问

@protected:只有自己和子类能访问

@private:只能自己使用,但是子类继承后,可以运用父类提供的方法进行修改。不可以直接调用。


实例变量修饰符,从自己开始,到下一个实例变量修饰符或大括号结束。


写在.m中的属性,自身可以使用,外界看不到,也访问不到。

可以被子类继承,但不会被直接使用,也不会被看到,形同private 只是不会被看到


没有声明,直接写在.m文件中的方法就是私有方法,不能被外界访问与调用,但是可以被自己调用。

私有方法不能被继承

被自己调用就是在自己这个文件中调用。


直接%@打印对象名,相当于调用了一个对象方法description

所以,重写方法description后,%@的值也会改变

可以与NSStringWithFormat结合, “ NSStringWithFormat: ” 后面相当于NSLog中的语句。


多态:不同的对象以自己的方式响应相同名称方法的能力称为多态

如:父类 * 变量名 = 子类对象,通常把右边的当成左边来用

编译时看左边,所以左边没有的方法会报错,若想调用子类有而父类没有的方法,则将对象强转成子类。

[(子类对象 *) 变量名 子类方法];

运行时看右边,所以只能干子类能干的事。

子类对象能调用父类方法,但是父类对象不能调用子类方法。

编译看左边,运行看右边。

1.必须有继承关系 2.必须重写方法 3.父类指针指向子类对象 


通过 Class 变量名=[类名 Class];  来获得类对象

类对象是唯一的,类加载到内存中,会生成一个Class类型的对象来代表这个类,叫做类对象。

可以用类对象来调用类方法 [类对象名 类方法名];

类对象可以实例化对象,直接new就行

类型名 *变量名 = [类名 new];

isa指向类对象,类对象中也有个isa指针,通过类对象指向代码段

类对象存放在数据区里

对象存放在堆里,对象名存放在栈里


方法都以SEL类型存储在内存中

当类声明一个对象,对象调用方法时,系统会把这个方法转换成SEL类型,然后拿这个SEL到类方法中去匹配。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值