Objective-C 面向对象基础-类

来源:互联网 发布:hr系统人力资源软件 编辑:程序博客网 时间:2024/05/21 17:20

面向对象是一种编程思想,无论是在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;}


0 0
原创粉丝点击