文档章节

OC学习笔记八 类2(代码部分)

卧龙小
 卧龙小
发布于 2014/09/26 01:59
字数 931
阅读 33
收藏 0

一.类的申明

//定义一个枚举值
enum Color
{
    black,
    white
};
typedef enum Color IColor;

//声明类 用@inteface
@interface Cat:NSObject //NSObject 是根类,有一些基本方法,比如创建对象的方法
{
    //定义属性
    /*
     注意:
     1.属性一般用“_”开头
     2.必须定义在大括号中
     3.注意变量的作用域
     */
    @public
    int _age;
    IColor _color;
}

//定义行为必须写在@interface 和@end 之间,并且不能写在大括号之内
/*
 声明函数步骤
 OC方法分为 类方法(+) 和 对象方法(-)
 
 1.定义函数结构 
 2.是否有参数
 3.是否有返回值
 
 注意
 1.声明类的行为必须在@interface 和@end 之间,并且不能写在大括号中
 2.oc 方法中所有的数据类型都需要用括号括起来
 3.如果没有形参用";"结束不用括号,应为 括号用于数据类型
 4.如果是类方法用 + ,对象方(需要用实例来调用)法用 -
 5.方法名命名规则 驼峰命名法
 6.OC 方法中,每个参数对应一个冒号
 7.冒号也是方法名的一部分
 8.多个惨可以在冒号前加上标签,说明参数的作用,“说明”也是方法的一部分
 */
 
//无参数 无返回值 
-(void) walk;

//无参数 有返回值
-(int) getAge;

//有参数 有返回值
-(int) eat:(char *) food;

//多个参数 主要空格
-(void) eatFood:(char *) food andDrink:(char *) water;
@end//声明结束



二.类的实现

/*
@implementation 表示实现一个类
@end 表示类实现结束
@implementation 只有一个作用,就是实现@interface中声明的方法
*/

@implementation Cat 
    /*
    实现方法
    1.@implementation要显示 @interface 中声明的方法,名称一样,只需要在后面加上大括号
    2.在括号中实现功能	
    */
	
    //无参数 无返回值
    -(int) walk
    {
        NSLog(@"cat walk");
    }
	
    //无参数 有返回值
    -(int) getAge;
    {
        //在OC对象中,直接通过名字访问成员变量
        return _age;
    }
	
	
    //有参数 无返回值
    -(char *) eat:(char *) food
    {
        NSLog(@"%s",food);
        return "ok";
    }
	
    //多个参数
    -(void) eatFood:(char *) food andDrink:(char *) water
    {
        NSLog("Food:%s Water:%s",food ,water);
    }
  
@end


三 访问部分

int main(int argc, const char * argv[])
{

    //创建对象
    /*
     说明:
     1.要创建对象,需要类继承NSObject类
     2.要访问实例变量,需要把变量声明为@public 类型
     
     创建对象前,首先在堆中创建类对象(存储对象方法 ) 
     实例化对象 [Obj new]  [Cat new]时会做三件事:
     1.在堆中开辟新的存储空间(有别于类对象的空间,是堆中的空间,new 一个 则开辟一个)
     2.初始化成员变量(成员变量 在堆 中),给成员变量赋默认值,lsa(指针 指向 对象)
     3.返回地址 指向堆地址的指针
     
     Cat *cat 用于接收返回地址的指针,是个局部变量
     局部变量会再栈中开辟空间,保存指向堆中指针
     
     */
     
     
    Cat *cat = [Cat new];
    
    //访问属性 和C中指针访问方式一样
    cat->_age=4;
    cat->_color=white;
    int age = cat->_age;
    NSLog("age=%d",age);
    
    
    //调用方法 用 "[]"
    /*
    调用方法 调用方法在oc 中有称为发送消息
		
    1.cat对象(栈中)在堆中找到las指针
    2.las指针 找对 对应 类对象的方法
    3.如果方法中有成员变量(类对象中不保持成员变量),方法会根据调用指针定位对应的对象的成员变量(堆中)
    */
		
    //无参数 无返回值
    [cat  walk];
		
		
    //无参数 有返回值
    int age = [cat getAge];
    NSLog(@"%d",age);
		
		
    //有参数 无返回值
    [cat eat:"mouse"];
		
		
    //多个参数
    [cat eatFood:"mouse" andDrink:"农夫山泉"];	
   
    return 0;
    
}




© 著作权归作者所有

共有 人打赏支持
卧龙小
粉丝 42
博文 146
码字总数 70107
作品 0
西城
程序员
Scala 学习笔记 模式匹配

1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函数和偏应用函数、Scala学习笔记(七) Sealed Class 和 Enumeration都是为了这一篇而铺垫准备的...

Tony沈哲
2017/05/16
0
0
OC之类和对象

从今天开始我的IOS开发算是起步了,第一天学习Objective-C,感觉不是很爽。作为一名Java程序猿的我,第一次使用OC语法什么的都不习惯,尤其是@到处都是,不过,今天看看还是有点儿收获的。 ...

斯特凡
2015/06/12
0
0
OC1-OC面向对象新概念解释及其面向对象编程

一.C语言主要是面向过程,OC中开始大量使用面向对象。对于在以后的问题中有了面向对象和面向过程两种思考模式。就五子棋而言,面向过程是具体操作步骤,设计思路就是首先分析问题的步骤:1、...

小黑202
2016/07/15
0
0
OC学习之旅 (一) 内存管理及OC常用方法

最近学习OC,所以在博客写下自己的笔记. OC的基本: 1 id 相当于java的Object 代表任何对象. 所以id是关键字,不能用作变量!! 2 oc中使用"."符号是调用 int a =object.a 是调用的是 [object ge...

Jonson
2013/04/13
0
2
写在新书《Swift开发手册:技巧与实战》出版之际

1月份的时候新书出版了,正值研究生毕业之际,想写点什么又无法抵抗毕业浮躁的心态,所以推到了正式入职之后。首先当然还是想安利一波,新书封面见如下: 2014年年底因为跟同学组队参加竞赛的...

cg1991130
2016/03/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python:关于读取文件的指定行的问题

先来造一个文件:就叫做 test.txt吧,内容是下面这个样子: 表头1,数据12,数据23,数据34,数据45,数据56,数据67,数据7 那么我们并不打算把这个表头给读出来 怎么办呢? 先来打开文...

Oh_really
16分钟前
1
0
Rails 用现代 Rails 逃离单页面应用 “兔子洞”

在工作共总是觉得turbolinks非常爽,但是却总是被说成是过时的技术,大家都喜欢spa,哪怕不用的spa的人也是禁用掉的多,找不到很好的理由劝说别人使用,这篇文章说的很到位,或者说至少是牛人...

wmzsonic
20分钟前
0
0
Hive 分布式搭建,Spark集成Hive记录

本帖详细介绍搭建步骤,仅仅记录自己搭建过程以及采坑经历。 前提环境: Hadoop集群 版本2.7.2 Spark集群 版本2.1.0 Linux版本 Centos7 准备搭建 MySql版本5.5.61 ,Hive-2.1.0 去官网下载M...

我爱春天的毛毛雨
23分钟前
2
0
打包QML程序

1、windeployqt执行路径(D:\Qt\5.12.0\msvc2017_64\bin)加入到PATH中 2、使用Qt自带的命令行交互 Command 终端(Qt 5.12.0 64-bit for Desktop (MSVC 2017))切换到 Release 编译成功的exe...

渣渣曦
今天
4
0
优秀互联网高级测试工程师应该具备的能力

概述 在之前写的互联网高级测试工程师至少具备的能力一文中,提到了测试工程师至少具备的能力,但是并没有提到优秀测试工程师应该具备的能力,下文简单的谈一谈。当然这些全部都是我的个人理...

Sam哥哥聊技术
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部