zoukankan      html  css  js  c++  java
  • OC基础第二讲

    实例变量可见度和方法

    1.实例变量可见度

    • public 对外公开,子类可以继承
    • protected 对外不公开,子类可以继承
    • private对外不公开,子类不可继承

    // 声明实例变量

        //  公有的

        @public

    NSString *_address;    //地址

    NSString *_hobby;      //兴趣

        //  受保护的,默认的

        @protected

    NSString *_name;       //姓名

    int _age;              //年龄

        // 私有的

        @private

    NSString *_sex;        //性别    

    被public修饰的实例变量可以用 ->直接访问,进行赋值取值操作:

    Person *p = [[Person alloc] init];

           p->_address = @"北京";

            p->_hobby = @"hello";

    如何在其他文件访问被protected修饰的实例变量?可以通过方法传入参数,在类的内部实现实例变量的赋值取值操作:

    方法声明如下:

    //  name添加设置值的方法

    - (void)setName:(NSString *)name;

    //  _name添加取值的方法

    - (NSString *)getName;

    方法实现:

    //  实现设置值的方法

    -(void)setName:(NSString *)name

    {

        _name = name;

    }

    //  实现取值的方法

    -(NSString *)getName

    {

        return _name;

    }

    2.方法

    OC中方法分为两类:

    • "-"方法(实例方法):只能对象使用,eg: -(void)sayHi
    • "+"方法(类方法):只能类使用,类方法中不能使用实例变量,eg: +(id)alloc

    方法声明:

    - (void)sayHiWithName : (NSString *)name withAge : (int)age;

    这个方法有两个参数name和age,(NSString *)、 (int)分别是参数的数据类型。

    sayHiWithName,withAge是参数形容词

    方法名是参数形容词和“:”,所以该方法的方法名是sayHiWithName :withAge :       

    冒号“:”不能省略,冒号的个数与参数个数一致

    3.复合

    • oc中,实例变量由其他类型(对象类型)组成,称作复合。

    例如:创建四个类,分为为Father类,Mother类,Child类,Family类

    Family类的实例变量声明如下:

    //  声明三个实例变量

        Father *_father;        //  爸爸

        Mother *_mother;        //  妈妈

        Child *_child;          //  孩纸

    这三个实例变量不是普通数据类型,而是已经创建的三个类。

    import

    当一个文件中需要用到其他类,需要导入其类名:

    #import <Foundation/Foundation.h>

    #import "Father.h"

    #import "Mother.h"

    #import "Child.h"

     交叉导入问题:A B两个类,A类中导入了B的头文件,如果B类中也导入了A的头文件,这就叫交叉导入

    要避免交叉导入的问题,可以使用@class(前置声明),前置声明的作用是告诉编译器@class后的字符串是一个类,但其实并未导入类的接口内容。

  • 相关阅读:
    Encrypted Handshake Message
    RSAParameters Struct
    What if JWT is stolen?
    What's the difference between JWTs and Bearer Token?
    RSA Algorithm Example
    第18届Jolt大奖结果公布
    Ruby on rails开发从头来(windows)(三十六) 调试技巧
    Ruby on rails开发从头来(四十二) ActiveRecord基础(主键和ID)
    YouTube开放基础技术架构 让用户建自家YouTube
    Ruby on rails开发从头来(四十) ActiveRecord基础(Boolean属性)
  • 原文地址:https://www.cnblogs.com/liuyu521/p/3690292.html
Copyright © 2011-2022 走看看