——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
OC学习笔记——类与对象的使用
首先区分类和对象的区别。
类是一种抽象的数据类型,而对象是类的实例。这么说可能还是不好理解。
举个例子人是一个类,类中有身高体重的属性。小明是个人,是一个对象,身高180,体重70KG。
我们先建一个类People,在OC中类的定义为@inteface
@interface People:NSObject
{
@public
NSString *name;
int height;
float weight;
int telNum;
}
@end
这样这个类就建成了,里面还有名字,身高,体重,和电话号码4个四个属性,四个属性前有修饰符 @public 说明这四个为共有成员。有点JAVA和C++基础的都明白public、private和protected的区别,这里就不再做详细说明,最后千万不要忘记@end。
那在如何创建一个对象呢,例如java可以写成 People jevon = new People;,在OC中和Java不同,OC中定义对象写法为People *jevon = [People new];
而定义对象中的属性类似C,jevon->name = @”JevonLin”;
主函数测试代码如下:
void main(int argc,const char * argv){
People *jevon = [People new];
jevon->name = @"JevonLin";
NSLog(@"My name is %@",jevon->name);
}
可以打印出 My name is JevonLin
这就是简单的创建了一个类
下面就是类方法的定义
大体分为4种
1.无返回值无参数方法
2.无返回值有单一参数方法
3.无返回值有多个参数方法
4.有返回值方法
首先说下如何定义 类方法定义在类成员括号后,end之前。如下
@interface People:NSObject
{
@public
NSString *name;
int height;
float weight;
int telNum;
}
-(void)sawPeopleInfo;
@end
先分解说下方法定义的含义
-(int)liveIn:(NSString ) address andIn: (NSString ) home;
第一部分 -(int)liveIn 减号为对象方法 相反也有加号 加号为类方法。
int 为返回值类型 liveIn为方法名称
第二部分 (NSString ) address andIn: (NSString ) home
(NSString *) address 为第一个参数 括号内为参数类型
andIn: 为衔接两个参数的内容,可随便写只要实现时候写的一样,这个不为固定写法,比如可以叫andHome都可以。
(NSString *) home为第二个参数
再说一下实现方法
实现的代码写在类方法外 用@implementation+类名 定义 如下代码
@implementation People
-(void)sawPeopleInfo
{
NSLog(@"---%@'s Info---",name);
NSLog(@"---height is %d ---",height);
NSLog(@"---weight is %.1f---",weight);
}
@end
在这里可对方法进行实现 方法名及参数同定义一样 里面就是需要进行的操作。
这样我们就做了一个查看人这个类信息的方法,在main函数中使用方法为
[jevon sawPeopleInfo];
void main(int argc,const char * argv){
People *jevon = [People new];
jevon->name = @"JevonLin";
NSLog(@"My name is %@",jevon->name);
jevon->height = 188;
jevon->weight = 80.0;
jevon->telNum = 186426;
[jevon sawPeopleInfo];
}
这样可以打印出
My name is JevonLin
—JevonLin’s Info—
—height is 188 —
—weight is 80.0—
其他几个方法类似这个
基本上类和对象的简单使用就这些
我做了个 人的类属性有名字,身高,体重,和电话号码。
方法有查看人的信息、这个人从哪里来、这个人现在住哪和这个人的电话号。
代码如下,可以参考(引入的包只有 Foundation/Foundation.h CSDN编译器写不出来 不知道是不是要转义 这里没有贴 ):
@interface People:NSObject
{
@public
NSString *name;
int height;
float weight;
int telNum;
}
-(void)sawPeopleInfo;
-(void)comeFrom:(NSString *) address;
-(void)liveIn:(NSString *) address andIn: (NSString *) home;
-(int)getTelNum;
@end
@implementation People
-(void)sawPeopleInfo
{
NSLog(@"---%@'s Info---",name);
NSLog(@"---height is %d ---",height);
NSLog(@"---weight is %.1f---",weight);
}
-(void)comeFrom:(NSString *) address
{
NSLog(@"%@ is come from %@",name,address);
}
-(void)liveIn:(NSString *) address andIn: (NSString *) home
{
NSLog(@"%@ is live in %@ -- %@",name,address,home);
}
-(int)getTelNum{
return telNum;
}
@end
void main(int argc,const char * argv){
People *jevon = [People new];
jevon->name = @"JevonLin";
NSLog(@"My name is %@",jevon->name);
jevon->height = 188;
jevon->weight = 80.0;
jevon->telNum = 186426;
[jevon sawPeopleInfo];
[jevon comeFrom:@"DaLian"];
[jevon liveIn:@"BeiJing" andIn: @"ZGC"];
int jevonTelNum = [jevon getTelNum];
NSLog(@"Jevon's phone Number is %d",jevonTelNum);
}