面向对象是一种编程思想,无论是在C++, Java还是OC中都是差不多的,实现了一个简单的Model类, OC中和C++类似,类的声明和实现需要显示的分开,声明在.h中,实现部分则在.m中。
声明部分:Goods.h
//
// Goods.h
// 02_OOP
//
// Created by apple on 14-11-8.
// Copyright (c) 2014年 cc. All rights reserved.
//
//Foundation是个FrameWork, Foundation.h 引用了很多常用的OC类
#import <Foundation/Foundation.h>
/**
* 1. OC是面向对象的,OC中的关键字前面需要加上@,为了与C/C++的关键字区分,OC是支持C,C++,OC三者混编的
* 2. @interface 并不是java中的接口,而是代表声明一个类。。(是不是有点蛋疼) @end 在这两个关键字之间写类的声明部分
* 3. : 是继承符号,和C++ C#是一样的
* 4. NSObject是否OC中所有类的最基类,继承不能省略
*/
@interface Goods : NSObject {
//定义一个商品的Model类,Goods
//OC声明成员属性必须定义在花括号之内
//商品价格
int m_price;
//商品数量
int m_count;
} // OC定义类的 花括号后面没有; 这点与C++不同
// OC声明方法前面需要加 - 或者 +来区分, - 带便非静态方法 + 代表静态方法(static方法)
// OC中建议getters方法与成员函数同名,即C++中的 int getPrice();
- (int)price;
// OC中方法名中的冒号代表参数,一个冒号代表一个参数,并且冒号也似函数名的一部分 函数名其实是setPrice: (蛋疼)
- (void)setPrice:(int)price;
- (int)count;
- (void)setCount:(int)count;
- (void)printProperty:(int)price:(int)count;
@end
实现部分: Goods.m
//
// Goods.m
// 02_OOP
//
// Created by apple on 14-11-8.
// Copyright (c) 2014年 cc. All rights reserved.
//
#import "Goods.h"
#import <Foundation/Foundation.h>
/**
* @implementation 代表类的实现部分。。同样也不要理解为java里的实现接口
*/
@implementation Goods
//定义两组getters和setters方法
- (void)setPrice:(int)price {
m_price = price;
}
- (int)price {
return m_price;
}
- (void)setCount:(int)count {
m_count = count;
}
- (int)count {
return m_count;
}
- (void)printProperty:(int)price:(int)count {
NSLog(@"价格=%i, 数量=%d", price, count);
}
@end
在main中创建类测试一下
//
// main.m
// 02_OOP
//
// Created by apple on 14-11-8.
// Copyright (c) 2014年 cc. All rights reserved.
//
#import <Foundation/Foundation.h>
#include "Goods.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//OC中调用方法 [类名 函数名] 或者 [对象 函数名]
//OC创建对象需要2步
// 1.需要先调用NSObject继承而来的的静态方法alloc申请内存
// 2.调用init方法来初始化对象,返回的对象是指针类型
Goods* goods = [[Goods alloc] init];
//调用setters
[goods setPrice:99];
[goods setCount:1000];
//调用printProperty传入 两个getters获取成员属性的值, 打印出来
[goods printProperty:[goods price] :[goods count]];
//释放goods对象,如果使用的auto模式,则不需要调用, xcode在编译时会产生维护代码来帮助程序员释放掉内存
//[goods release];
}
return 0;
}