首页 > 代码库 > 【学习ios之路:Object-C】类与对象

【学习ios之路:Object-C】类与对象

1.面向对象和面向过程概念

1).面向过程

面向过程:以过程为核心,注重的是完成事件的详细步骤,一步一步如何实现.

2).面向对象

面向对象:以事物为核心,注重的是参与该事件的事物应该具备的功能.所以完成该事件只是事物所有功能中的一个功能.


2.类与对象

类: 类是具有相同特征以及行为的事物的抽象,它是一个抽象的概念,不具体.

对象: 类的实例.类的具体体现.生活中的万物都是对象.

3.OO与OOP

OO:(Object Oritented)面向对象

OOP:(Object Oriented Programming)


4.@是OC标志

NSLog(@"%hello World");//输出的目的是为了验证.


5.如何创建对象

1.开辟空间(堆区)

例:Person  *p = [Person alloc];//开辟空间, +号方法,类方法.

//+(id)alloc; //id等同于void *,泛型,可以代表所有的对象.

//因为p存储着对象堆区空间的地址,所有间接把p叫做对象,但是本质还是指针变量.


2.初始化

即:  p = [p  init]; //初始化,nil null 0


6.OC中方法的调用形式: 消息发送机制

[receiver message];

1.+号方法     类方法

2.-号方法      对象方法(实例方法)

例如:

  Car *car = [[Car alloc] init];
  [car run];//run();函数


7.类的定义
 *  类的定义分为两部分:1.接口部分(.h文件中)2.实现部门(.m文件中)
 *  接口部分: 以 @interface 开头 + 类型 : (冒号表示继承)  父类名  @end 作为结束
 *  类的接口部分的内容必须写在 @interface 与 @end 之间.
 *  类的实现主要是方法的实现.
 *  类的接口部分提供实例变量以及方法的声明
 *  类的本质就是自定义的一种数据类型.

例如:1).Student.h声明文件

@interface Student : NSObject
{
    @public
    
    NSString *_name;//姓名
    NSInteger _age;//年龄
    NSInteger _num;//学号
    NSString *_glass; //班级    //实例变量一定要写在大括号之内,而且大括号之内也只能写实例变量.    //对应类的特征,实例变量(等同结构体的结构体成员) }

- (void)study;//方法名:study
- (void)message:(NSString *)name1;//无返回值,有一个参数,参数类型NSString *类型//方法名 sumValueWithA: withB: withC:- (NSInteger)sumValueWithA:(NSInteger)a withB:(NSInteger)b withC:(NSInteger)c; - (NSInteger)maxGBWithA:(NSInteger)a withB:(NSInteger)b;//方法名 maxGBWithA: withB: @end

2).Student.m实现文件.
 *  类的实现部分: 以@implementation 开头  + 实现类名 @end 作为实现部分的结束.
 *  类的实现代码 必须卸载 @implementation 与@end 之间才有效.


@implementation Student
- (void)study {
    NSLog(@"学习去!");
}
- (NSInteger)moneyValueWithA:(NSInteger)a withB:(NSInteger)b {
    
    return a * b;
}
- (void)message:(NSString *)name1 {
    NSString *s = name1;
   
    NSLog(@"%@",s);
}//最小公倍数- (NSInteger)maxGBWithA:(NSInteger)a withB:(NSInteger)b {     //存储a,b的值    NSInteger tempA = a;     NSInteger tempB = b;     NSInteger rem = a % b;    while(rem != 0) {        a = b;        b = rem;        rem = a % b;    }    return (tempA * tempB) / b;} @end 
3).  main函数实现.

  
      Student *stu = [[Student alloc] init];
      [stu study];
      NSInteger mon = [stu moneyValueWithA:10 withB:20];
      NSLog(@"%ld", mon);
      [stu message:@"asdf"];

注:
      代码规范:
      1.类名:有英文单词组成,每个单词的首字母大写,不能出现数字,更不能出现拼音.
      2.实例变量: 有英文单词组成,除了第一个单词的首字母小写以外,其他单词首字母大写.
      3.一般情况下一对一,h和m文件中定义一个类.
    

【学习ios之路:Object-C】类与对象