IOS开发---OC语言-③类的设计和简单练习

来源:互联网 发布:邪恶网站源码 编辑:程序博客网 时间:2024/06/05 21:53

类的设计:

1> 类名

* 类名的第一个字母必须是大写
* 不能有下划线

* 多个英文单词,用驼峰标识

2> 属性

3> 行为(功能)

练习1

/*
 类名:Car
 属性:轮胎个数、时速(速度)
 行为:跑

 */

// 因为使用了NSObject
#import <Foundation/Foundation.h>

// 完整地写一个函数:函数的声明和定义(实现)
// 完整地写一个类:类的声明和实现


// 1.类的声明
// 声明对象的属性、行为
// : NSObject 目的是:让Car这个类具备创建对象的能力

@interface Car : NSObject
{// 用来声明对象属性(实例变量\成员变量,默认会初始化为0
    // @public可以让外部的指针间接访问对象内部的成员变量

    @public
    int wheels; // 轮胎个数
    int speed; // 时速(xxkm/h)
}
// 方法(行为):方法名、参数、返回值(声明、实现)
// 只要是OC对象的方法,必须以减号 - 开头
// OC方法中任何数据类型都必须用小括号()扩住
// OC方法中的小括号():括住数据类型

- (void)run;
@end
// 2.类的实现
// 用来实现@inteface中声明的方法

@implementation Car
// 方法的实现(说清楚方法里面有什么代码)
- (void)run
{
    NSLog(@"车子跑起来了");
}
@end
int main()
{
    // 在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]
    // 利用类来创建对象
    // 执行了Car这个类的new行为来创建新对象
    
    // 定义了一个指针变量p,p将来指向的是Car类型的对象
    // [Car new]每次都会创建出一个新对象,并且会返回新对象本身(新对象的地址)

    Car *p = [Car new];    
    Car *p2 = [Car new];
    p2->wheels = 5;
    p2->speed = 300;
    [p2 run];    
    // 给p所指向对象的wheels属性赋值
    p->wheels = 4;
    p->speed = 250;    
    // 给p所指向对象发送一条run消息
    [p run];    
    NSLog(@"车子有%d个轮子,时速位:%dkm/h", p->wheels, p2->speed);    
    return 0;

}

练习2

/*
 人
 类名:Person
 属性(成员变量\实例变量):体重、年龄
 行为(方法):走路、吃
 */

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @public
    int age;
    double weight;
}
- (void)walk;
- (void)eat;
@end
// 2.类的实现
@implementation Person
// 实现@interface中声明的方法
- (void)walk
{
    NSLog(@"%d岁、%f公斤的人走了一段路", age, weight);
}
- (void)eat
{
    NSLog(@"%d岁、%f公斤的人在吃东西", age, weight);
}
@end
int main()
{
    // 在使用类创建对象之前,会将类加载进内存
    Person *p = [Person new];
    p->age = 20;
    p->weight = 40;
    
    [p eat];
    [p walk];
    
    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 60;
    [p2 eat];
    [p2 walk];
    
    /*
    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 50;
    
    p = p2;
    
    p->age = 40;
    
    [p2 walk];
    */
    
    /*
    Person *p = [Person new];
    p->age = 20;
    
    Person *p2 = [Person new];
    p2->weight = 50.0;
    
    [p walk];
     */
     
    /*
    Person *p = [Person new];
    p->age = 20;
    p->weight = 50.0;
    [p walk];
    
    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 60.0;
    [p2 walk];
    */

    return 0;
}

原理图片


注意:
(1)类中存的是方法
(2)每个对象中都有一个isa指针
(3)函数可以写在任意地方(@interface和@end之间除外)
0 0
原创粉丝点击