博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进击的Objective-C--------------Objective-C(二)
阅读量:4578 次
发布时间:2019-06-08

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

1实例变量的可见度:
@public
    // @public 关键字 表明实例变量是公有的 类外 可以访问 类内 也可以访问
    // 类外:指的就是该类的.h和.m 之外
    // @public 关键字是使用的最少的 因为它破坏了封装的特性
    NSString *_name;
@protected
    // @protected 关键字 表明实例变量是受保护的,类外不可以访问,类内可以访问
    // 子类是可以继承@protected修饰的实例变量
    // 默认的 以后开发用的最多
    NSString *_gender;
@private
    // @private 关键字 表明实例变量是私有的,类外不可以访问,类内可以访问
    // 子类是不可以可以继承@private修饰的实例变量
    NSInteger _age;
}
2方法:
⽅方法是OC的核心,采用消息机制:[receiver message]
“-”message由对象来调⽤
“+”message由类来调⽤
//  无参无返回值
//  1 实例方法 :对象调用 - 方法
-(void)makeMoney;
-(void)payMoney;
-(void)warmBed;
// 2 类方法 :类的调用(直接用类名调用) + 方法
+(void)makeGrilFriend;
// 无参有返回值
-(NSString *)backName;
// OC 中 给实例变量赋值的方法 叫做setter方法(设置器)
// OC 中 读取实例变量的方法叫做getter方法(访问器)
// 有参无返回值
// OC方法中的参数是由冒号的个数来区分的 冒号后面放的是参数的类型由括号括起来 一般第二个参数往后,相当于参数的一个说明,它算在方法名内
//  -号是方法的类型 void是返回值类型 方法名setName:age:  参数是(NSString*)name和(NSInteger)age;
-(void)setName:(NSString *)name age:(NSInteger)age;
// 有参有返回值
-(NSInteger)getAge:(NSInteger)age;
3重点掌握
getter方法
OC 中 读取实例变量的方法叫做getter方法(访问器)
-(NSString *)brand;
setter方法
OC 中 给实例变量赋值的方法 叫做setter方法(设置器)
-(void)setBrand:(NSString *)brand;
自定义初始化
-(instancetype)initWithName:(NSString *)name
                                   gender:(NSString *)gender
                                         age:(NSInteger)age{
    _name =name;
    _gender = gender;
    _age = age;
    return self;}
4类的组合
Boy *b1 = [[Boy alloc]initWithName:@"赵成浩"];
Grill *g1 = [[Grill alloc]initWithName:@"宋慧乔"];
Family *f1 = [[Family alloc]initWithBoy:b1 gril: g1];
NSLog(@"%@",[[f1 boy]name]);
NSLog(@"%@",[[f1 gril]name]);
NSLog(@"%@ %@",[[f1 boy]name],[[f1 gril]name]);
5循环导入:
#include  C语言中使用包含头文件引入的是C语言中标准输入输出的函数库
#import    OC中引入头文件的意思
@class      适用于两个类之间互相引用 只是声明两个类,很好的防止了#import产生的循环引用问题
 +类 alloc
 -对象 -(void)setName:(NSString *)name age:(NSIntage)age;
6 语法糖 
语法糖 (.语法)(指针数组放指针,字符串)
*[p + i] = p[i]
NSLog(@"%@",p1.name);
 
 
代码:
#import <Foundation/Foundation.h>
@interface person : NSObject{
    NSString *_name;
    NSString *_gender;
    NSInteger _age;
}
-(NSString *)name;
-(void)setName:(NSString *)name;
-(NSString *)gender;
-(void)setGender:(NSString *)gender;
-(NSInteger)age;
-(void)setAge:(NSInteger)age;
-(instancetype)initWithName:(NSString *)name
                     gender:(NSString *)gender age:(NSInteger)age;
@end
#import "person.h"
@implementation person
-(NSString *)name{
    return _name;
}
-(void)setName:(NSString *)name{
    _name = name;
}
-(NSString *)gender{
    return _gender;
}
-(void)setGender:(NSString *)gender{
    _gender = gender;
}
-(NSInteger)age{
    return _age;
}
-(void)setAge:(NSInteger)age{
    _age = age;
}
-(instancetype)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age{
    _name =name;
    _gender = gender;
    _age = age;
    return self;
}
@end
#import <Foundation/Foundation.h>
#import "person.h"
int main(int argc, const char * argv[]) {
person *p1 = [[person alloc]initWithName:@"宋慧乔" gender:@"女" age:17];
    [p1 setName:@"范冰冰"];
    NSLog(@"%@",[p1 name]);

转载于:https://www.cnblogs.com/sharkHZ/p/4984036.html

你可能感兴趣的文章
仓库温度湿度控制措施_仓库温度、湿度控制管理制度(1)
查看>>
linux下定时调度shell脚本_Linux下使用shell脚本自动执行脚本文件 编辑shell定时脚本...
查看>>
erlang启动参数详解_Erlang启动参数详解
查看>>
mac php-frm xampp_如何在Mac中使用shell_exec xampp php
查看>>
axure 导入元件库显示不出白框_猿型库:Axure小练习之自定义下拉框
查看>>
两个集合相减怎么算_你家使用的防火窗(耐火窗)质量合格吗?怎么判断好坏呢?...
查看>>
ue4加载本地图片_UE4引擎初始化原理详细讲解
查看>>
python整数作为条件_Python整数类型(int)详解
查看>>
pta简单实现x的n次方_c语言第二次作业pta..docx
查看>>
python导入规范_Python编程入门:如何规范的导入包和模块
查看>>
P2264 情书
查看>>
BZOJ 1004: [HNOI2008]Cards
查看>>
剪切板实现拖拽代码
查看>>
海量数据处理策略
查看>>
hello,world !
查看>>
【Entity Framework】Model First Approach
查看>>
C# DataTable删除行Delete与Remove的问题
查看>>
HDU2586How far away? LCA
查看>>
网络流 - 最大流
查看>>
随手记note(记事簿)
查看>>