文档章节

object-c面向对象2

芥末小弟
 芥末小弟
发布于 2017/03/01 09:54
字数 743
阅读 3
收藏 0

我们知道在c#中有访问私有成员变量的get  和set方法。这个目的是用来公开实力对象的私有变量。我看了下ios的访问修饰符。也就是private,public,protected.这些基本上都和c#的差不多。

下面介绍下。ios的getter   和  setter  以及属性的书写方式。

这里我写一个Song类  (歌曲类)。

他有的属性有  歌曲名字(title),歌唱家(artist),以及播放时间(duration).

我利用xcode建立了一个基本的类(这里和c和c++特别像,有.h  和.m文件组成一个类)

我们在上个博客中都知道了关于object-c声明类的方式,如下:

.h文件的声明部分

@interface xxx{

  //私有变量声明

}

//类的方法的声明      -   代表属于实力的  (对象的)   + 代表属于类的

@end

.m文件的实现部分

@implementation xxx{

  //方法的实现   这里可以实现getter和setter的方法

@end

 demo:

 1 @interface Song{
 2     NSString *title;//歌曲名
 3     NSString *artist;//艺术家
 4     long int duration;//播放时间
 5 }
 6 //get  和set方法
 7 -(NSString *) title;
 8 -(void)setTitle:(NSString *)newTitle;
 9 -(NSString *)artist;
10 -(void)setArtist:(NSString *)newArtist;
11 -(long int)duration;
12 -(void)setDuration:(long int)newDuration;
13 @end
头文件声明部分

 

 实现部分

@implementation Song

-(NSString *) title{
   return title;
}

-(void) setTitle:(NSString * newTitle){
    title=newTitle;
}

.......
@end

 

 

main函数:

Song *mySong=[[Song  alloc] init];

[mySong setTitle:@"爱你一万年"]//此处会调用set函数

NSLog(@"mysong  title is %@",[mySong title]);//此处会调用get函数

 

 

上述的demo是针对 我们常规的get和set的写法,学过c#的知道 如果公开一个私有变量的方式还有属性的方式。例如 public  int   stuId{get;set;};

这样可以了,我在ios的教学中也学习了   关于属性的使用。他是利用@syntheise  和@property  结合来使用的。

这样的话我们上面的Song类我们可以这样写:

 1 //声明部分
 2 @interface  Song{
 3     NSString *title;
 4     NSString *artist;
 5     long int  duration;    
 6 }
 7 
 8 //属性的使用
 9 @property(copy,readwrite) NSString *title;
10 @property(nonatomic,retain) NSString *artist;
11 @property(readonly) long int duration;
12 @end
13 
14 //实现部分  结合@synthesize
15 
16 @implementation Song
17 
18 @synthesize title;
19 @synthesize artist;
20 @synthesize duration;
21 @end
View Code

 

 

到此 两种方式公开类的私有成员我们都可以知道吧。当然访问和设定都是可以[[类 开辟内存(alloc)] init];   [事例的类对象  title];或者 .

 

 

 

ios  类的构造方法

object-c的构造函数和java\c#的方式是不同的。

最重要一点  ,object-c中的修饰符只能在成员变量前加。(public 、protected、private)

@public 作用域限定的实力变量,可以在任何情况下访问;

@private 作用域限定的实力变量,只能在这个类里面才可以访问;

@protected 作用域限定的实力变量,可以在这个类里面和这个类的派生类里面可以访问这个变量,在类外的访问是不推荐的,但也可以访问。

 

© 著作权归作者所有

共有 人打赏支持
芥末小弟
粉丝 0
博文 202
码字总数 120715
作品 0
昌平
私信 提问
面向对象内核设计模式,第二部分

Object-oriented Design Patterns in the Kernel, Part 2 面向对象内核设计模式,第二部分 posted by Elv13 on Mon 27th Jun 2011 14:17 UTC 发表于:2011年6月27日 北京时间22:17 "In the f......

xyxzfj
2011/06/28
0
0
【python】博客是必须写的-3 面向对象

1.基本概念 ·面向对象是一种编程方式,此编程方式是基于"类"和"对象"的使用·类:是一个模板,模板中包装了多个"函数"供使用(可以将多个函数共用的变量封装到对象中)·对象:根据类创建的实例,...

Mx孔小发
01/04
0
0
OC1-OC面向对象新概念解释及其面向对象编程

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

小黑202
2016/07/15
0
0
快速上手Gobject

What is G-object? —很多人被灌输了这样一种概念:要写面向对象程序,那么就需要学习一种面向对象编程语言,例如C++、Java、C#等等,而C语言是用来编写结构化程序的。 —事实上,面向对象只...

shezjl
2016/01/17
44
0
Object-C学习笔记(一)

最近休息在家,闲来无事想搞一个iphone的游戏玩玩,于是买了本 图灵 的 Object-C基础教程 看了看,这本书还算比较基础,里面讲解知识点也比较通俗易懂,尤其是做过一些开发的人,基本上没有什...

logbird
2012/11/29
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
21分钟前
2
0
传播正能量——《海南英才》阅读的读后感2200字

传播正能量——《海南英才》阅读的读后感2200字: 新华社记者12月8日从公安部获悉,针对自媒体“网络水军”敲诈勒索等违法犯罪活动突出问题,今年以来,公安部组织各地公安机关依法深入开展侦...

原创小博客
29分钟前
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
5
0
Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
昨天
11
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部