——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
下面通过创建一个Student类来演示类的创建过程以及对象的创建
1. 类的声明:通过声明确定这个类里面所具有的属性和方法,属性也叫成员变量,可以是任何数据类型的变量。
我们可以给Student类设置年龄age,体重weight;方法可以有跑步run,吃饭eat.
代码如下:
@interface Student :NSObject // 类的声明
{
@public // @public可以让Student对象的age和weight属性被外界访问
// 年龄属性
int age;
// 体重属性
int weight;
}
// 声明跑的行为
- (void) run;
// 声明吃的行为
- (void) eat;
@end
@interface Student :NSObject
@end
的作用是声明创建的类里有哪些属性和方法。
2. 类的实现
下面进行类的定义:实现方法的具体作用
@implementation Student // 类的实现
// 实现跑的行为
- (void) run
{
weight-=1; // 调用一次跑的方法体重减1
NSLog("@学生现在的体重是%d",weight); // 输出学生当前体重
}
// 实现吃的行为
- (void) eat
{
weight+=1; // 调用一次吃的方法体重加1
NSLog("@学生现在的体重是%d",weight); // 输出学生当前体重
}
@end
这样有了声明和实现,一个类就建立好了,接下来可以根据这个类创建多个对象。
3. 创建对象
// 主函数
int main()
{
Student *stu1 = [Student new]; // 创建一个学生对象
stu1->age = 10;
stu1->weight = 10;
[stu1 run];
[stu1 eat];
return 0;
}
main函数的代码分析、内存分析
1> [Student new]每次都会创建出新的对象,并且返回对象的地址,那么就应该用一个指针变量保存对象的地址
Student *stu1 = [Student new];
用一个指针变量stu1指向内存中的Student对象
2> 设置学生对象的属性
和用指向结构体的指针访问结构体属性一样,用->
stu1->age = 10;
stu1->weight = 10;
- 创建多个Student对象
1> 分别只设置age,weight属性
Student *stu1 = [Student new];
stu1->age = 10;
Student *stu2 = [Student new];
stu2-> = weight=5;
2> 1个赋值给另一个,然后修改属性
Student *stu1 = [Student new];
stu1-> = weight=5;
stu1-> = age=20;
Student *stu2 = stu1;
stu2-> = age=10;
5.面向对象封装的好处
1>更接近人类的思考方式
2>只需要关注对象,不需要关注步骤
声明和定义多个类
1.常见错误
a. 只有类的声明,没有类的实现
b. 漏了@end
c. @interface和@implementation嵌套
d. 两个类的声明嵌套
e. 成员变量没有写在括号里面
f. 方法的声明写在了大括号里面
2.OC方法和函数的区别
a. OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在
b. C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有
c. C函数不能访问OC对象的成员
d. 低级错误:方法有声明,但是实现的时候写成了函数
总结:以上就是一个类的创建以及类对象的创建,访问类里的属性,赋值,以及对象调用类里的方法的过程。还有一些关于类的注意事项。