【OC-2】OC语言基础二(自定义初始化、点语法)(连载二)
2015-07-29 07:58
453 查看
1.自定义初始化
(1)方法返回值类型:有三种方式:(id), (instancetype), (类名
*)
(2)初始化方法:自定义的初始化方法,协商以init开头,并且init后面必须是大写
【Book.h文件中声明】
- (id) initWithTitle:(NSString *)title WithPage:(NSInteger)page;
【Book.m文件中实现】
- (id) initWithTitle:(NSString *)title WithPage:(NSInteger)page
{
self = [super init];
if(self)
{
_title = title;
_page = page;
}
return self;
}
【main.m文件中调用】
Book *book = [[Book alloc] initWithTitle:@"经典" WithPage:20];
2.点语法调用
凡是赋值语句等号左边第一个点是set方法,其余都是get方法
//set方法,点语法修改用户名,密码
manager.userName = @"jack”;<===>[manager setUserName];
manager.password = 999999;<===>[manager setPassword];
//get方法,点语法访问修改的用户名,密码
NSString *userName = manager.userName;<===>[manager userNa];
NSInteger password = manager.password;<===>[manager password];
/*
设计如下两个类Person和Dog,狗有一个自定义初始化方法,可以传入狗名和狗的颜色。
Person有一个遛狗的方法,可以传入一个时间值,9点带狗出去跑,10点和狗玩捡球的游戏,11点逗狗叫。
*/
Dog.h文件中:
{
NSString
*_dname;
NSString
*_color;
}
//自定义的初始化方法----》狗名、狗颜色
- (id)initWithDname:(NSString
*)dname Color:(NSString
*)color;
//跑方法
- (void)run;
//捡球方法
- (void)pickup;
//叫方法
- (void)bark;
//睡觉
- (void)sleep;
//set方法
- (void)setDname:(NSString
*)dname;
- (void)setColor:(NSString
*)color;
//get方法
- (NSString
*)dname;
- (NSString *)color;
Dog.m文件中:
#pragma mark
//自定义的初始化方法----》狗名、狗颜色
- (id)initWithDname:(NSString
*)dname Color:(NSString
*)color{
self
= [super
init];
if
(self) {
_dname
= dname;
_color
= color;
}
return
self;
}
#pragma mark
//跑方法
- (void)run{
NSLog(@"狗跑!");
}
//捡球方法
- (void)pickup{
NSLog(@"狗捡球!");
}
//叫方法
- (void)bark{
NSLog(@"狗叫!");
}
//睡觉
- (void)sleep{
NSLog(@"睡觉!");
}
//set方法
- (void)setDname:(NSString
*)dname{
_dname
= dname;
}
- (void)setColor:(NSString
*)color{
_color
= color;
}
//get方法
- (NSString
*)dname{
return
_dname;
}
- (NSString
*)color{
return
_color;
}
Person.h文件中:
#import
"Dog.h"
{
NSString
*_pname;
Dog
*_dog;
}
//set方法
- (void)setPname:(NSString
*)pname;
- (void)setDog:(Dog
*)dname;
//get方法
- (NSString
*)pname;
- (Dog
*)dog;
//遛狗方法
- (void)liugou;
Person.m文件中:
//set方法
- (void)setPname:(NSString
*)pname{
_pname
= pname;
}
- (void)setDog:(Dog
*)dog{
_dog
= dog;
}
//get方法
- (NSString
*)pname{
return
_pname;
}
- (Dog
*)dog{
return
_dog;
}
//遛狗方法
- (void)liugou{
NSLog(@"请选择时间:");
NSInteger
time;
scanf("%ld", &time);
switch
(time) {
case
9:
// NSLog(@"带狗出去跑!");
[_dog
run];
break;
case
10:
// NSLog(@"和狗玩捡球游戏!");
[_dog
pickup];
break;
case
11:
// NSLog(@"逗狗叫!");
[_dog
bark];
break;
default:
// NSLog(@"狗在睡觉!");
[_dog
sleep];
break;
}
}
main.m文件中:
#import
"Person.h"
#import
"Dog.h"
int
main(int
argc, const
char * argv[]) {
@autoreleasepool
{
Dog
*dog = [[Dog
alloc]initWithDname:@"多多"
Color:@"白"];
Person
*jack = [[Person
alloc]
init];
[jack setDog:dog];
jack.pname
=
@"jack";
dog.dname
=
@"东东";
NSLog(@"%@的狗的名字是:%@,它是%@色的",[jack
pname],[dog
dname],[dog
color]);
do
{
[jack liugou];
}
while (1);
(1)方法返回值类型:有三种方式:(id), (instancetype), (类名
*)
(2)初始化方法:自定义的初始化方法,协商以init开头,并且init后面必须是大写
【Book.h文件中声明】
- (id) initWithTitle:(NSString *)title WithPage:(NSInteger)page;
【Book.m文件中实现】
- (id) initWithTitle:(NSString *)title WithPage:(NSInteger)page
{
self = [super init];
if(self)
{
_title = title;
_page = page;
}
return self;
}
【main.m文件中调用】
Book *book = [[Book alloc] initWithTitle:@"经典" WithPage:20];
2.点语法调用
凡是赋值语句等号左边第一个点是set方法,其余都是get方法
//set方法,点语法修改用户名,密码
manager.userName = @"jack”;<===>[manager setUserName];
manager.password = 999999;<===>[manager setPassword];
//get方法,点语法访问修改的用户名,密码
NSString *userName = manager.userName;<===>[manager userNa];
NSInteger password = manager.password;<===>[manager password];
/*
设计如下两个类Person和Dog,狗有一个自定义初始化方法,可以传入狗名和狗的颜色。
Person有一个遛狗的方法,可以传入一个时间值,9点带狗出去跑,10点和狗玩捡球的游戏,11点逗狗叫。
*/
Dog.h文件中:
{
NSString
*_dname;
NSString
*_color;
}
//自定义的初始化方法----》狗名、狗颜色
- (id)initWithDname:(NSString
*)dname Color:(NSString
*)color;
//跑方法
- (void)run;
//捡球方法
- (void)pickup;
//叫方法
- (void)bark;
//睡觉
- (void)sleep;
//set方法
- (void)setDname:(NSString
*)dname;
- (void)setColor:(NSString
*)color;
//get方法
- (NSString
*)dname;
- (NSString *)color;
Dog.m文件中:
#pragma mark
//自定义的初始化方法----》狗名、狗颜色
- (id)initWithDname:(NSString
*)dname Color:(NSString
*)color{
self
= [super
init];
if
(self) {
_dname
= dname;
_color
= color;
}
return
self;
}
#pragma mark
//跑方法
- (void)run{
NSLog(@"狗跑!");
}
//捡球方法
- (void)pickup{
NSLog(@"狗捡球!");
}
//叫方法
- (void)bark{
NSLog(@"狗叫!");
}
//睡觉
- (void)sleep{
NSLog(@"睡觉!");
}
//set方法
- (void)setDname:(NSString
*)dname{
_dname
= dname;
}
- (void)setColor:(NSString
*)color{
_color
= color;
}
//get方法
- (NSString
*)dname{
return
_dname;
}
- (NSString
*)color{
return
_color;
}
Person.h文件中:
#import
"Dog.h"
{
NSString
*_pname;
Dog
*_dog;
}
//set方法
- (void)setPname:(NSString
*)pname;
- (void)setDog:(Dog
*)dname;
//get方法
- (NSString
*)pname;
- (Dog
*)dog;
//遛狗方法
- (void)liugou;
Person.m文件中:
//set方法
- (void)setPname:(NSString
*)pname{
_pname
= pname;
}
- (void)setDog:(Dog
*)dog{
_dog
= dog;
}
//get方法
- (NSString
*)pname{
return
_pname;
}
- (Dog
*)dog{
return
_dog;
}
//遛狗方法
- (void)liugou{
NSLog(@"请选择时间:");
NSInteger
time;
scanf("%ld", &time);
switch
(time) {
case
9:
// NSLog(@"带狗出去跑!");
[_dog
run];
break;
case
10:
// NSLog(@"和狗玩捡球游戏!");
[_dog
pickup];
break;
case
11:
// NSLog(@"逗狗叫!");
[_dog
bark];
break;
default:
// NSLog(@"狗在睡觉!");
[_dog
sleep];
break;
}
}
main.m文件中:
#import
"Person.h"
#import
"Dog.h"
int
main(int
argc, const
char * argv[]) {
@autoreleasepool
{
Dog
*dog = [[Dog
alloc]initWithDname:@"多多"
Color:@"白"];
Person
*jack = [[Person
alloc]
init];
[jack setDog:dog];
jack.pname
=
@"jack";
dog.dname
=
@"东东";
NSLog(@"%@的狗的名字是:%@,它是%@色的",[jack
pname],[dog
dname],[dog
color]);
do
{
[jack liugou];
}
while (1);
相关文章推荐
- Box2D C++教程 第一节:简介
- 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
- C++ outline and interview questions (3): Class
- 中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
- Google C++ Coding Style:引用参数
- [C++]strcpy和strcpy_s安全性比较
- C++ Pragma 预处理指令
- C++对象模型——关键词所带来的差异(第一章)
- Java学习--(三)变量与常量与与C++的一些区别
- 开发一款C语言小游戏——骑士飞行棋
- c/c++对数组取地址
- c++成员指针笔记
- POJ 1273 最大流入门题 Edmonds_Karp算法
- c++编写断点续传和多线程下载模块【转】
- C\C++ 程序的编译过程
- 堆排序
- Visual C++ 2015 下的 enable_shared_from_this 原理简析
- C语言程序 指针
- C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?
- C++新特性学习(3)