Object-c 类、对象方法

//

//  main.m

//  firestMethod2

//

//  Created by AleuxQ on 16/3/14.

//  Copyright © 2016年 AleuxQ. All rights reserved.

//

#import <Foundation/Foundation.h>

/*

事物名称:iphone

属性:型号、cpu,尺寸,颜色

行为:打电话 发短信,上网

*/

//1、编写类的申明

//#######################################################

//C语言:定义函数分为:声明和实现

void about1();

void about2()  //定义

{

//实现

printf("使用C语言打印本机信息\n");

}

//#######################################################

@interface Iphone :NSObject  //此处NSObject (super class) 是为了让我们的Iphone 类具备创建对象的能力

{

//Instance variable is protected,只有让类中的属性公开后就可以直接通过一个指向结构体的指针来操作对象中的属性

@public   //公共的,属性公开后其它对象可访问

int _model;

int _cpu;

int _size;

int _color; //黑或白,用 0 或 1 表示

}

//OC中定义方法,在类的声明中定义,在 end 之前,(类似C语言中的内部函数,外部函数)- 表示对象方法,只能通过指针调用;+ 表示类方法

// 没有返回值没有参数的;

- (void) about; //无返回值,没有形参不需要用(), 国为OC中()是特殊用法, 用来括住数据类型,故此 about 方法后面不需要()

/*

C语言函数,同样OC的方法也有这四类:

没有返回值没有参数的;

有返回值没有参数的;

有返回值有参数的;

没有返回值有参数的

*/

//LoadMessage 方法,有返回值没有参数的,读取消息

- (char *)LoadMessage;

//有返回值有参数的,打电话功能

//OC中如果方法有参数,那个每个参数的数据类型前必须加上一个 冒号:

- (int)Call:(long int)number;

//有多个参数的方法:发短信,给一个手机号发内容为xxxx 的短信

// 此方法的名称为 :sendMessage::

- (int)sendMessage:(int)number :(char *)content;

//为了提高写代码过程中的阅读性,OC方法允许我们给每个参数添加一个标签 来说明 当前参数的含义,以致在方法所带参数太多情况下,方法调用时候不知道参数意义是什么。。。在参数多的情况下,方法名称可很长,将方法名翻译过来即可明白 方法实现的什么功能

//此时标签也是方法名的一部分,方法名为 sendMessageWithNumber:AndContent:

- (int)sendMessageWithNumber:(long int)number AndContent:(char *)content;

- (void)lookWithNumber:(long int)number AndContent:(char *)content;

@end

//1、编写类的实现,@implementation开头,end 结尾

@implementation Iphone

//行为的实现,类的实现

- (void)about

{

NSLog(@"使用Object-C 打印本机信息");

//在对象方法中访问该对象的属性,可直接访问,写上 _对象名 即可,比如:_model,_cpu

NSLog(@"mode = Iphone %d,cpu = %d,size = %d,color = %d",_model,_cpu,_size,_color);

}

- (char *)LoadMessage

{

//返回短信内容

//    return "我家我做主";  //NSLog 对C语言支持性不是很好,输出汉字会乱码或空白

return "Wife is God !";

}

- (int)Call:(long int)number

{

NSLog(@"打电话给%ld",number);

return 1;

}

- (int) sendMessage:(int)number :(char *)content

{

NSLog(@"给%d发短信:%s",number,content);

return 1;

}

- (int)sendMessageWithNumber:(long int)number AndContent:(char *)content

{

NSLog(@"发内容:%s给%ld",content,number);

return 1;

}

//有参数 无返回值 方法:

- (void)lookWithNumber:(long)number AndContent:(char *)content

{

NSLog(@"look number is %ld,Content is %s",number,content);

}

@end

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

//通过类创建 对象

Iphone *p = [Iphone new];

// OC中的类其实本质就是一个结构休,所以 p 这个指针其实就是指向了一个结构体

//获取对象的属性

NSLog(@"model=%d,cpu=%i,size=%d,color=%i",p->_model,p->_cpu,p->_size,p->_color);//初始值全 为 0;

//个性对象的属

/*

(*p)._color = 5;

NSLog(@"color=%i",(*p)._color);

p->_model = 6;  //(*p)._model = 6;  也可以这样调用

p->_cpu = 2;

p->_size = 4.7;

p->_color = 1;

NSLog(@"model=%d,cpu=%i,size=%d,color=%i",p->_model,p->_cpu,p->_size,p->_color);

*/

//C 函数调用

about2();

//OC:给对象发消息:方法的调用

[p about];

//[对象  消息(方法名称)],对象方法只能对象调用

char * content = [p LoadMessage];

NSLog(@"短信内空为:%s",content);

[p Call:18688888888];

[p sendMessage:18688888 :"good good study , day day up !"];

[p sendMessage:11111111 :"Fuck You"];

[p sendMessageWithNumber:18888888888 AndContent:"Good,UP UP UP !"];

[p lookWithNumber:18888888888 AndContent:"Addd"];

// insert code here...

NSLog(@"This is the End !");

return 0;

}

输出结果:

2016-03-14 23:50:12.943 firestMethod2[2414:114978] model=0,cpu=0,size=0,color=0

使用C语言打印本机信息

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 使用Object-C 打印本机信息

2016-03-14 23:50:12.944 firestMethod2[2414:114978] mode = Iphone 0,cpu = 0,size = 0,color = 0

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 短信内空为:Wife is God !

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 打电话给18688888888

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 18688888发短信:good good study , day day up !

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 11111111发短信:Fuck You

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 发内容:Good,UP UP UP !18888888888

2016-03-14 23:50:12.944 firestMethod2[2414:114978] look number is 18888888888,Content is Addd

2016-03-14 23:50:12.945 firestMethod2[2414:114978] This is the End !

Program ended with exit code: 0

时间: 2024-12-25 21:44:25

Object-c 类、对象方法的相关文章

Java面向对象一(封装 继承 多态 类 对象 方法)

1.封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 如下,人这个类封装了很多人的属性和行为: 2.继承:很好的实现了代码的复用,提高了编程效率. 人{ 年龄(属性一) 身高(属性二) 性别(属性三) 做事(行为之一) 走路(行为之二) 说话(行为之三)} 教师{ 年龄(属性一) 身高(属性二) 性别(属性三) 做事(行为之一) 走路(行为之二) 说话(行为之三) 教书(行为之四)} 教师继承了人的属性和行为,额外多出的是教书的行为.所以可以写成 教师 继承了 人这个类 的

PHP获取类对象方法、属性、常量列表!

$r = new ReflectionClass($serv); print_r($r->getConstants()); print_r($r->getProperties()); print_r($r->getMethods());

Objective-C对象之类对象和元类对象

作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/8592492 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 作为C语言的超集,面向对象成为Objective-C与C语言的最大区别,因此,对象是Objective-C中最重要的部分之一.目前面向对象的语言有很多,Objective-C中的对象又和其他语言中的对象有什么区别呢?下面来简单介绍Objectiv

JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)

1.流的简述及演示案例输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.在对这个文字进行操作.简单说:字节流+编码表字节流的两个顶层父类:1,InputStream 2,OutputStream.字符流的两个顶层父类:1,Reader 2,Writer String filePath = "F:\\demo.txt"; FileWriter f

Java基础(43):Java中的Object类与其方法(转)

Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类是Java中唯一没有父类的类. 其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法. Object类中的方法 构造方法:public Object() 文档中的类概览: Java中的每个类都具有定义在Object类中的这些方法. protected Object cl

String类对象的常用操作及方法

转载自http://blog.csdn.net/fire1175/article/details/1690431 String类对象的常用操作及方法在Java中,String类包含有50多个方法来实现字符串的各种操作,以下介绍一些我们需要经常使用的方法.(1)字符串的连接public String concat(String str) 该方法的参数为一个String类对象,作用是将参数中的字符串str连接到原来字符串的后面. (2)求字符串的长度public int length()返回字串的长

ES6对象方法Object.assign()

1  基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). [javascript] view plain copy var target = { a: 1 }; var source1 = { b: 2 }; var source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3} Object.ass

关于类、方法、对象(实例):通过一个例子看一下self都做了哪些事情

我们在定义一个类时,经常会在类的各个方法中看到self,那么在程序执行时self到底起了什么作用,什么时候要加self,这一点需要我们思考并好好理解.之前在学习时没有想这么多,加之用pycharm写代码,很多地方都自动补全了,有些地方没加self,会提示错误,然后补全,没有想过这个过程,今天刚好整理一下. 1.先简单说明一下self的含义 类的方法与普通的函数只有一个特别的区别 -- 它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值, Python 会提供这个值.这

es6 javascript对象方法Object.assign()

es6 javascript对象方法Object.assign() 2016年12月01日 16:42:34 阅读数:38583 1  基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). [javascript] view plain copy var target = { a: 1 }; var source1 = { b: 2 }; var source2 = { c: 3 }; Object.assig

浅析Object基类提供的Virtual Object.Equals, Static Object.Equals and Reference.Equals等三个方法

当我们去查看object.cs源代码文件的时候,会发现object基类提供了三种判断相等性的方法.弄清楚每种方法存在的原因,也就是具体解决了什么问题,对我们理解.net判断对象相等性的逻辑很有帮助,下面让我们分别来看看吧! 1.Virtual Object.Equals()方法 实际上.net中提供了几种比较相等性(equality)的方法,但是最基础的方法就数object类中定义的virtual Object.Equals()了.下面让我们以一个customer类来看看该方法的实际运作. st