OC面向对象_三大特性



封装:

    把具体的对象封装成抽象的类,隐藏内部实现,对象的属性和实现细节,仅对外公开接口,提高代码的安全性,实现模块化调用。为元素公有私有就是为了隐藏实现细节,只露一个干净的接口,让业务逻辑被实现细节所污染,就是所谓的封装

 

 

继承:

    拥有父类的所有非私有的成员变量、属性和方法就是is-a的关系

    子类可以扩展父类没有的属性和方法,是一种强耦合的关系,就是父类变了,子类就不得不变

 

 

 

多态:

     实现同一个接口,使用不同的实例而执行不同的操作。就是不同对象响应同一方法时做出的不同反应,是一种现象。

 

类的多态即父类的指针指向子类的对象,所以没有继承就没有多态

 

使用多态时,会动态检测,以调用真实的对象方法

 

父类的指针指向子类的对象的代码实现:

    有Student类和Student的子类为SubStudent

实现为:

    Student *stu = [SubStudent new];

 

 

 

 

多态是不同类型的对象使用同一方法的不同实现,没有继承就没有多态,因此,多态就是发生在父类与子类之间的。父类与子类对同一方法的不同实现就是多态

 

父类可以利用多态调用子类的方法,只需使用方法选择器就可以调用子类的方法,也可以直接调用子类方法,但是如果是子类特有的方法就不能调用,因为编译时会出现错误,其实运行程序是不会报错的,是可以运行的(所以父类可以直接调用与父类重名的方法)。但是父类是没办法使用子类的属性或者成员变量的。

 

对于属性,可以使用方法选择器调用子类的属性方法,但是无法对其进行操作,对于setter方法更是如此,直接crachgetter方法获取为空,因为根本没法对其赋值。

 

 

 

 

 

你可能感兴趣的:(OC_编程)