zoukankan      html  css  js  c++  java
  • OC的封装、继承与多态

         面向对象有三大特征:封装、继承和多态。

    一、封装

          封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。简而言之,信息隐藏,隐藏对象的实现细节,不让用户看到,以此来增强安全性和简化编程,进而达到封装的目的。

          使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

         访问修饰符:private、protect、public

    private:私有的,不可供外部访问的信息,只有类本身能存取.

    protect:受保护的,类和派生类可以存取.

    Internal:只有同一个项目中的类可以存取.

    Protected Internal:是Protected和Internal的结合. 

    Public:公有的,完全共享存取.

    二、继承

       Objective-C 的继承具有单继承的特点,每个子类都只能有一个直接父类。然而,他可以有无限多个间接父类。

       当子类继承父类时,子类可以得到父类的:

      1.全部成员变量

      2.全部方法

    OC中子类继承父类语法格式:

    1 @interface 类名:父类名
    2 {
    3 //成员变量
    4 }
    5 //方法
    6 @end

    另外,需要注意的是NSObject类是根类,所有的类的父类(直接父类或间接父类)。

    说到父类,就得讲到super关键字

          super关键字在实例方法中代表父类对象的本身,在类方法中代表父类,可以使用super关键字调用从父类继承下来的方法。

          在实例方法中使用super只能调用到父类的实例方法,在类方法中使用super只能调用到父类的类方法。

    1 @interface Person:NSObject
    2 {
    3 
    4 }
    5 -(void)run;//这是实例方法
    6 +(void)sleep;//这是类方法
    7 @end
    @interface Student:Person
    {
    
    }
    @end
    1 @implementation Student
    2 -(void)testRun{
    3   [super sleep];//这是错误的,因为sleep是类方法。在实例方法中,super只能调用父类的实例方法
    4   [super run];
    5 }
    6 +(void)testSleep{
    7   [super sleep];
    8   [super run];/这是错误的,因为run是实例方法。在类方法中,super只能调用父类的类方法
    9 }

    三、多态

       多态:一种事物的多种形态。不同类的对象可以定义共享相同名称的方法,这个就是多态的表现形式。

      实现多态的条件:

    1.必须存在继承关系

    2.子类重写父类的方法

    3.父类声明的变量指向子类对象

    OC指针类型的变量有两个:编译时类型和运行时类型。编译时类型由声明变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现多态。

    1 @interface Person:NSObject
    2 {
    3 }
    4-(void)run;
    5 @end
    1 @interface Student:Person
    2 {
    3 
    4 }
    5 @end
    1 @interface Teacher:Person
    2 {
    3 
    4 }
    5 @end

    1
    Person *personStudent=[[Student alloc]init];//此时编译时类型和运行时类型不一致,发生多态 2 [personStudent run]; 3 Person *personTeacher=[[Teacher alloc]init]; 4 [personTeacher run];//父类Person的run方法表现的形式为多种形态,这就叫多态
  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/fmdxiangdui/p/5068104.html
Copyright © 2011-2022 走看看