obj-c编程01:第一个类和对象的范例
这是obj-c学习过程中的第一篇博文,接下来还会有未知的N篇内容(关键是不知道obj-c有多难搞啊!),而且在以后不断的学习中,还会不断的在以前写的博文中修改和添加新的内容。在遇到暂时无法解决的问题时,我不是避而不谈,而是将问题直接写出来,希望以后得以解决,也希望各位高人看帖时哪能帮我回复解决哦。因为初次学习obj-c,开始肯定会写一些初级代码,犯一些低级错误,程序猿天赋不够,没办法啊!希望不断深入和总结吧,欢迎各位高人拍砖指点!好了言归正传,正如李纳斯所言:源代码拿来,直接上代码吧:
@interface Box:NSObject { int l; int w; } -(void)print; -(void)set_l:(int)x; //set box.length -(void)set_w:(int)x; //set box.width -(int) l; -(int) w; @end @implementation Box
/*{
int l;
int w;
} 如果前面没有,则这里不能有实例变量声明吗?,否则会出错 error: inconsistent number of instance variables specified*/ -(void)print{ NSLog(@"l:%d,w:%d",l,w); } -(void)set_l:(int)x{ l=x; } -(void)set_w:(int)x{ w=x; } -(int)l{ return l; } -(int)w{ return w; } @end int main(int argc, char *argv[]){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; @autoreleasepool { NSLog(@"hello class! :)"); Box *box0 = [Box new]; Box *box1 = [[Box alloc] init]; //new类方法的"分开步骤写法" [box0 set_l:1]; [box0 set_w:2]; [box1 set_l:101]; [box1 set_w:102]; NSLog(@"box0: l is %d , w is %d",[box0 l],[box0 w]); NSLog(@"box1:"); [box1 print]; } NSLog(@"Hello World!"); [pool drain]; return 0; }
[2014-06-30 第1次添加内容:定制对象的init方法]:
为了更好地初始化对象的变量,为什么不在对象init方法中就对其变量赋值呢?当然可以哦,以下是修改过的A类,在其添加了新的init:(int)方法,并且重载了原有的方法。在新的init:(int)方法中,我们首先要调用父类中的init方法,在其成功后(返回非nil值),才做自己初始化,另外注意init返回的都是id变量:
#import <Foundation/Foundation.h> @interface A:NSObject @property int i; -(void)set_i:(int)i; -(void)print; -(id)init:(int)x; @end @implementation A{ int i; } @synthesize i; -(void)set_i:(int)i_v{ i = i_v; } -(void)print{ NSLog(@"[class A][i:%d]:hello!",i); } -(id)init:(int)x{ self = [super init]; if(self){ [self set_i:x]; } return self; } -(id)init{ return [self init:0]; } @end @interface B:A{ int j; } @property int j; @end @implementation B @synthesize j; -(void)print{ NSLog(@"[class B:A][i:%d,j:%d]hello!",self.i,j); } @end int main(int argc,char *argv[]) { @autoreleasepool{ NSLog(@"hello obj-c!"); A *a = [[A alloc] init:100]; B *b = [[B alloc] init:200]; //a.i = 101; //b.i = 1001; //[a set_i:99]; //[b set_i:199]; //b.j = 1002; [a print]; [b print]; } return 0; }
注意,obj-c中的#import和C中的#include类似,不同的是#import保证只加载一次h文件哦。@开头的字面值称为obj-c的关键字,为了和C代码冲突最小化,遂在开头加上字符@。
obj-c编程01:第一个类和对象的范例的更多相关文章
- JAVA入门第二季 第一章 类和对象
面向对象编程 Object Oriented Programming OOP 第一.什么是类和对象 在具体说明类和对象之前,先说说别的. 眼睛在人类身体上最为有用的器官.如果一个没有了眼睛,这个人与世 ...
- 前端学PHP之面向对象系列第一篇——类和对象
× 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...
- OC第一节 —— 类和对象
一.类和对象的概念 1.1类 自己的定义: 具有相同或相似性质对象的抽象. 1.2 对象 自己的定义: 对象是人们要进行研究的任何物体,从最简单的整数到复杂的飞机 等均可以看做是对象. 举例说明: 类 ...
- java面向对象编程——第四章 类和对象
OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...
- Scala 编程(二)类和对象
类,字段和方法 类是对象的蓝图.一旦定义了类,就可以用关键字new从类的蓝图里创建对象,类的定义: class ChecksumAccumulator { // class definition go ...
- Java入门第二季第一章类和对象知识点
Java 中的 static 使用之静态方法 1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员.如: 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问 ...
- 《Java入门第二季》第一章 类和对象
什么是类和对象 如何定义 Java 中的类 如何使用 Java 中的对象 Java中的成员变量和局部变量1.成员变量:在类中定义,描述构成对象的组件. 2.局部变量:在类的方法中,用于临时保存数据. ...
- Linux - 简明Shell编程01 - 第一个脚本(HelloShell)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo "hell ...
- scala编程(四)——类和对象
类,字段和方法 在scala里定义一个典型的类,代码如下: class ChecksumAccumulator { private var sum = 0 def add(b: Byte): Uni ...
随机推荐
- iOS开发之WKWebView代替UIWebView
前言 Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包括了很多大公司,网易新闻,滴滴出行等.因此,我们公司的应用也打算淘汰IOS7. 支持到 ...
- 巨星陨落 - Jim Gary
偶然在微软Research中搜论文时搜到了神牛Jim Gary的paper,看着照片有点眼熟,貌似在买过的哪本书中见过.于是就饶有兴致地看着Jim的生平介绍,结果- "Dr. Gray j ...
- antlr v4 使用指南连载2——准备环境
antlr v4 开发环境 从上一篇文章的例子中可以知道,antlr有一套自己的语法来声明目标语言的语法,因此它本身就需要编译或者使用antlr提供的api来读取这些语法规则,并使之可 ...
- Android批量打包-如何一秒内打完几百个apk渠道包
在国内Android常用渠道可能多达几十个,如: 谷歌市场.腾讯应用宝.百度手机助手.91手机商城.360应用平台.豌豆荚.安卓市场.小米.魅族商店.oppo手机.联想乐商.中兴汇天地.华为.安智.应 ...
- How to Find the Self Service Related File Location and Versions
How to Find the Self Service Related File Location and Versions (文档 ID 781385.1) In this Document ...
- java实现异步调用实例
在JAVA平台,实现异步调用的角色有如下三个角色: 调用者 取货凭证 真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据. ...
- C语言中extern关键字的使用
C语言中extern关键字的使用,直接上代码. file1.c文件 #include<stdio.h> extern long power(int); int A = 2; int mai ...
- 【一天一道LeetCode】#202. Happy Number
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...
- MyBatis进阶(一)运行原理
初次学习MyBatis,自己花了不少时间,理解一件事物是需要时间的.经过多次反复的理解,你的认知能力就可以得到提升.以下是学习MyBatis的一些理解认识,技术理解上若有不当之处,敬请朋友们提出宝贵意 ...
- Chipmunk僵尸物理对象的出现和解决(五)
,因为将反弹棒变长和缩短的代码是类似的所以我们只看一个即可,就让我们详细看看缩短的方法吧. +(void)doStickShorterWork:(Stick *)stick{ GameScene *g ...