继承 多态

————————————重载——————————————————

函数或方法的重载

    C++ 语言中, 将功能一致的函数或方法封装起来, 为了适应

    不同的条件与环境, 将函数或方法的名字写成一样的, 以便程序员使用

    构成重载的条件, 是函数或方法名一样, 参数的类型与数量和顺序要求不一样

 */

/*

double inputNum() {


    return 0;

}

 */


// 一般 重载只与函数名与参数有关

// 判断重载的方法步骤

// 1, 将函数体与函数的返回类型去掉

//      函数名 (参数列表)

// 2, 将形式参数的变量名去掉, 只留类型名

// 得到的结果, 没有重复的就是重载, 如果重复就是错误


// 写一个函数, 要求输入数字, 但是需要提供两个参数, 数字要求在这两个参数的范围内

int inputNum(int min, int max) {

    int temp;

    while (1) {

        scanf("%d", &temp);

        while (getchar() != '\n');

        if(temp >= min && temp < max) {

            break;

        }

    }

    return temp;

}


double inputNum(double min, double max) {

    double temp;

    while (1) {

        scanf("%lf", &temp);

        while (getchar() != '\n');

        if(temp >= min && temp < max) {

            break;

        }

    }

    return temp;

}




——————————————————————————————

 static 可以用在局部变量前, 可以用在全局的变量前, 还可以用在全局的函数前

    1, 用在局部变量前, 表示全局变量, 扩展的变量的作用范围, 扩展的变量的生命周期

    2, 用在全局的变量和函数的前面, 表示这个变量与函数是私有的, 只能在本文件中被访问

 

    OC , static 可以用在原来 C 语言中使用的地方

    除此之外, OC 中还可以放在类的方法里, 表示全局变量, 与放在函数中局部变量前一样




——————————————————————————————


// OC 中提供了两个关键字, 一个是 self 一个是 super

// self 使用在实例方法中, 代表的是当前对象

// self 使用在类方法中, 代表类, 或者类名



// 在实例成员(字段, 属性, 实例方法)

// 如果需要显式的访问实例字段, 使用

//  self->字段名

// 如果需要调用实例方法, 使用

//  [self 方法名]



// 在类方法中, self 不再是实例对象了, self 表示类, 或者是类名




————————————$——————————————————



 继承的特征

    1, OC 中都是单继承

        也就是说, 每一个类只允许有一个父类

    2, OC 中继承是可以传递的

    3, OC 中所有的类, 都是直接或间接的继承自 NSObject

    4, OC 中类方法会被继承下来, 要求在 interface 中声明, 要求使用 .h .m 文件编写

    5, OC 中实例方法也可以被继承下来, 要求在 interface 中声明, 要求使用 .h .m 文件编写

    6, OC 中成员变量(字段)有几个访问级别修饰符

        @public     公有的, 表示在任何地方都可以访问字段

        @protected  默认, 表示只允许在本类和子类中访问

        @private    只允许在本类中访问

    7, OC 中受保护的和共有的字段会被继承下来, 私有的不会被继承下来(有争议)





——————————————————————————————



        // 里氏转换原则

        // 1, 子类对象可以直接赋值给父类的变量

        

//        Student *stu = [Student new];

//        

//        [stu instanceMethod]; // 结果 子类

//        

//        Person *p = stu;

//        // Person 类型的指针与 Student 类型的指针可以指向同一个数据

//        

//        [p instanceMethod];  // 结果: 父类   子类

        

        

        // 2, 父类对象可以转换为指定的子类对象

        

        Person *p = [Teacher new];

        

        p = [Student new];

        

        [p instanceMethod];

        

//        Student *stu = p;

//        

//        [stu instanceMethod];



——————————————————————————————



——————————————————————————————



——————————————————————————————


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值