203-07-05 封装 继承 多态

继承

1、
OC是单一继承
2、封装:隐藏内部(.m文件)实现   稳定外部(.h文件)接口。 
                属性封装了实例变量;
                方法封装了具体实现;
                类封装了方法和属性;
    封装的好处:使用更加简单,变量更加安全,可以隐藏内部实现细节,开发速度快 。
3私有变量-private,私有方法 在.m中实现,在.h中没有声明,私有成员变量只能在类的内部使用;
      受保护的-protect
      公开的-public
4、继承特性
      让子类继承父类的非私有的属性和方法(因为OC中没有真正意义上的私有方法,因此子类会继承父类所有的方法),继承协议的话,这个协议是要写在类里面的,也就是说该协议不能写在单独的.h文件中。
      单根性:一个子类只能有一个父类
      传递性:如果A是B的子类,B是C的子类,那么A具C的所有特性
5、实例变量赋值使用-> ,属性赋值使用.
      
student1->name=@"小明";   //实例变量赋值
 student2.name=@"小红";     //属性赋值 


小结:子类继承过来的方法可以直接使用,也可以重写。但是重写之后,子类方法会覆盖父类中的方法,在调用子类中的方法时以子类方法为主。

多态
1、多态允许在同一个类中定义同一消息接口(OC中没有操作性多态);
有关多态 
正常;
子类指针指向父类开辟的内存空间,它实质上是一个父类对象;
一个父类指针指向了子类开辟的内存空间,它实质上是一个子类对象;
小结:主要看是谁alloc了,谁alloc了那么这个对象就是谁的类型;

id类型
id是把开辟内存空间的时间推迟到遇到alloc时才分配内存
id数据类型
万能类型匹配符
没有*号;
动态数据类型;
可以指向任何类的对象(设置是nil),而不关心其具体类型
在运行时检查其具体类型
可以对其发送任何(存在)消息

优点:
id类型较灵活
可以向任何对象发送已经存在的消息
在编码阶段不报任何警告

缺点:
id类型变量,可读性不高;
无法在编码阶段发现语法错误;

在实例变量前面可以加 private,public,protected关键字,但在方法前面不能加这些修饰符
@private,继承的也不能用
@protected,子类和本类都能使用某些属性,变量。
@public,


 
 
重载(overload)就是在类中可以创建多个方法,它们具有相同的名字,但参数的个数和参数的类型不同。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
确切的说OC中是没有重载的( 因为冒号是方法中的一部分,这样就认为方法是不同命的了),它的重载叫做操作性多态(在一个类里面,)  

重写是父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
在oc中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不
动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,
则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键
字引用了当前类的父类。


多态, 就是站在抽象的层面上去实施一个统一的行为,到个体(具体)的层面上时, 这个统一的行为会因为个体(具体)的形态特征而实施自己的特征行为
 

.pch:预编译文件
.plist: 


单例传值

代理传值

通知传值

blocks 传值  

OC中可能存在对象初始化不成功的现象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值