黑马程序员————OC基础——定义OC的类和创建OC的对象

——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;

  1. 创建多个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. 低级错误:方法有声明,但是实现的时候写成了函数

总结:以上就是一个类的创建以及类对象的创建,访问类里的属性,赋值,以及对象调用类里的方法的过程。还有一些关于类的注意事项。

你可能感兴趣的:(OC基础)