博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC基础第二讲
阅读量:5945 次
发布时间:2019-06-19

本文共 1496 字,大约阅读时间需要 4 分钟。

实例变量可见度和方法

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后的字符串是一个类,但其实并未导入类的接口内容。

 

 

 

posted on
2014-04-25 22:25 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/liuyu521/p/3690292.html

你可能感兴趣的文章
Mongodb部署记录[3]-主从搭建
查看>>
hive sql操作
查看>>
tomcat 深度优化
查看>>
127 - "Accordian" Patience
查看>>
阿里云CentOS7安装Oracle11GR2
查看>>
nginc+memcache
查看>>
php正则匹配utf-8编码的中文汉字
查看>>
MemCache在Windows环境下的搭建及启动
查看>>
linux下crontab实现定时服务详解
查看>>
返回顶部JS
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
史上最全的数据库面试题,不看绝对后悔
查看>>
用java数组模拟登录和注册功能
查看>>
javaScript实现归并排序
查看>>
关于jsb中js与c++的相互调用
查看>>
串结构练习——字符串匹配
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>
POJ-2251 Dungeon Master
查看>>
tortoisesvn的安装
查看>>
我是怎么使用最短路径算法解决动态联动问题的
查看>>