//
// main.m
// 02-对象方法
//
// Created by zhaokai on 15/4/29.
// Copyright (c) 2015年 zhaokai. All rights reserved.
//
/**
//描述一个类
名字:首字母大写,其他的遵循驼峰原则(GoodPerson)
属性:最好以_开头,其他的遵循驼峰原则
行为(方法):遵守驼峰原则
//人
名字:Person
属性:身高(_height) 年龄(_age)
行为:跑(run)
//车
名字:Car
属性:轮子(_wheel) 颜色(_color)
行为:跑(run)
//苹果手机
名字:Iphone
属性:颜色(_color) 型号:(_model)
行为:打电话(callPhone) 发信息(sendMessage)
对比c语言的函数
要实现函数的声明和函数的定义
实现类的声明和定义
*/
//类的声明
//写一个枚举,表示手机的颜色 typedef给枚举起一个别名
typedef enum{
IphoneColorWithWhite = 1,//枚举的第一个元素最好不要从零开始
IphoneColorWithBlack,
IphoneColorWithTuHaoJin
}IphoneColor;
//注意:NSObject的作用:使类拥有创建对象的能力
@interface Iphone : NSObject//类名
//写属性的声明
{
//注意:属性的声明必须放在{}里面
@public //使在类的外部可以调用类的成员变量
int _model;//型号
IphoneColor _color;//颜色
}
//方法的声明 放在{}的后面 @end的前面 暂时先不写
//先讲对象方法
//1.无参无返回值
//c的函数
void test();
//oc的对象方法的声明
//规则:1.以-号开头 2.所有的数据类型都要写在()里面,而且只有数据类型写在()里面 3.方法名遵守驼峰原则 4.如果没有参数,方法名后面什么都不用写
-(void)test1;
//2.有参无返回值
void test2(int a,int b);
//规则:1.无参无返回值的规则同样遵守 2.一个参数对应一个:号,:号放在参数类型的前面 :号是方法名的一部分,-号不是方法名的一部分
//有一个参数
-(void)callPhone:(char *)telephoneNumber;
//有两个参数
//注意:要将方法名写的像个句子,做到见名知意.所以当有多个参数的时候,最好在:前面添加对应的修饰词,修饰词是方法名的一部分
-(void)sendMessage:(char *)number andAddress:(char *)address;
//3.无参有返回值
-(char *)recieveMessage;
//4.有参有返回值
@end//声明的结束,不可以省略
//类的实现
@implementation Iphone//类名
//写方法的实现
//注意:实现当中只能写自己的声明中的方法的实现(定义)
void test(){
NSLog(@"这里是test里面");
}
-(void)test1{
NSLog(@"这里是test1里面");
}
-(void)callPhone:(char *)telephoneNumber{
NSLog(@"我在打电话,电话号码:%s",telephoneNumber);
}
-(char *)recieveMessage{
return "我们该过5.1了";
}
-(void)sendMessage:(char *)number andAddress:(char *)address{
NSLog(@"号码:%s,地址:%s",number,address);
}
@end
import
int main(int argc, const char * argv[])
{
//自动释放池
@autoreleasepool {
//创建一个具体的Iphone类的对象
//注意:要想让类或对象去做一些事情,必须这样写[方法的调用者 方法名称] 也可以这样写[对象/类名 方法列表]
//方法分类:通过对象调用的方法叫对象方法
//通过类名调用的方法叫类方法
Iphone * iphone1 = [Iphone new];
//给对象赋值
//oc中给对象赋值与结构体类似
iphone1->_model = 5;
iphone1->_color = IphoneColorWithBlack;
// printf("%i",a);
NSLog(@"%i",iphone1->_model);
//调用方法
test();
//在对象的内部有一个隐藏的属性,叫isa.它本身是一个指针变量.作用:同构isa指针找到要调用的方法
[iphone1 test1];
[iphone1 callPhone:"12334566"];
char *myString = [iphone1 recieveMessage];
// NSLog(@"%s",myString);
//注意:NSLog打印c字符串,有时会有问题
printf("%s",myString);
// [iphone1 sendMessage:"12345" :"tianfengli"];
[iphone1 sendMessage:"12345" andAddress:"tianfengli"];
//总结:一个类可以创建多个对象,对象之间互不影响
//方法只能通过对象指针/类名调用,不可以直接使用
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}