封装
为了保证在对问题的抽象中能够进行有效的设计,您必须从通用的接口考虑问题而不用考虑这些接口的实现细节。
对象的方法和实例变量也是类似的封装,在对象内可见,对象外不可见。实例变量的封装有时候也被称作信息隐藏。
继承
父类有子类共有的变量和方法
子类可以继承父类的所有非private的变量和方法
单根性:一个子类只能继承一个父类
传递性:如果A是B的子类,B是C的子类,那么A具有C的所有特征
[cat isMenmberOfClass :[Cat class]]; 精确判断对象是不是指定的类型 返回yes
[cat isMenmberOfClass :[Animal class]] 返回no,,,,,Cat继承与Animal
isKindOf 不精确 上边的2个都返回YES
多态
不同对象可以调用相同方法名的方法。多态的本质就是不同类可以公用相同的方法名。
方法名是对象接口的一部分。对象收到的消息的名字就是调用的方法的名字。因为不同的对象可以有同名的方法,所以对象必须能理解消息的含义。同样的消息发给不同的对象,导致的操作并不相同。
多态的主要好处就是简化了编程接口。它容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分开来
id sss;
sss = [[Student alloc] init];//Student类和Teacher类是两个毫不相关的类
[sss hello]; //调用Student里边的hello方法
sss = [[Teacher alloc]init]; //两个id类型的指针指向不同的位置
[sss hello]; //调用Teacher里边的hello方法。
2012-08-17 07:58:34.373 12[443:14503] student
2012-08-17 07:58:34.398 12[443:14503] teacher