都说编程语言只是一种工具,吃透一种语言,跨界去学习另一种语言,就简单很多。通过OC语言类的使用以及java语言的使用的对比,更好地去理解、掌握OC语言的基础知识。
什么是对象?
对象是抽象的,可以具体到某个人,某个事物。通常使用“特征”和“行为”去描述一个对象。例如本田飞度,1.5L的自然吸气发动机、魔术后排座椅、两厢制式等去描述,这样的一个实例,可以称作为一个对象。
什么是类?
类同样是一个非常抽象的概念。相对于“对象”,类则可以描述为:本田汽车。其特征为:本田车标,带有VTEC技术的发动机,FF的驱动方式等。具有相同特征的对象,则可以看作为一个类。
在java语言中,使用“class”去定义一个类,可以在类里,定义相应的参数以及方法。而在OC语言中,通过创建一个cocoa项目,来添加一个类。创建一个类,将得到两个文件,以“Student”为类,就有Student.h和Student.m。
在OC语言中,类是由接口(interface)和实现(implementation)构成。具体代码如下:
//interface部分:
#inmport <Foundation/Foundation.h>
@interface Student : NSObject
{
@public //定义一下实例变量是公共的。
//特征部分
NSString *name;
NSInteger age;
NSInteger age2;
NSString *hobby;
}
//行为部分
-(void)sayHello;
-(void)eatLunch;
以上代码,用于定义相应的实例变量以及方法。
其中,@public定义属性为公共的。@protected定义属性为受保护的,只有该类以及子类都可以调用。@privated则定义属性为私有的,只能在该类进行调用。
而”-“则将方法定义为实例方法,”+”则定义为类方法。
//implemetation
#import "Student.h"
@implemetation
-(void)sayHello{
NSLog(@"Hello!I'm %@,I'm %d years old,I like %@",name,age,hobby);
}
-(void)eatLunch{
if(age2 >age){
NSLog(@"I have no time");
}
else{
NSLog(@"I am free");
}
}
以上代码则是接口文件的写法。通过Import “Student.h”,调用interface中定义的属性以及方法,最后通过main函数给属性赋值,调用实现方法,最后得到运行结果。
在主函数中,创建对象,完成对象的声明,内存分配,初始化。
Student *stu = [[Student alloc]init];
Student *stu = [Student new];
以上两种创建对象的方法都可以。
引用对象的变量以及方法的语法:
对象名->实例变量名 = 具体值
stu->name = Gene;
在OC语言中,类的实现,通过接口文件(interface)去定义实例变量以及方法,通过实现文件(implemetation)去定义实现方法。最后通过主函数创建对象、赋值,调用方法,得出最后的结果。