object-c面向对象2
我们知道在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:
@interface Song{
NSString *title;//歌曲名
NSString *artist;//艺术家
long int duration;//播放时间
}
//get 和set方法
-(NSString *) title;
-(void)setTitle:(NSString *)newTitle;
-(NSString *)artist;
-(void)setArtist:(NSString *)newArtist;
-(long int)duration;
-(void)setDuration:(long int)newDuration;
@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类我们可以这样写:
//声明部分
@interface Song{
NSString *title;
NSString *artist;
long int duration;
} //属性的使用
@property(copy,readwrite) NSString *title;
@property(nonatomic,retain) NSString *artist;
@property(readonly) long int duration;
@end //实现部分 结合@synthesize @implementation Song @synthesize title;
@synthesize artist;
@synthesize duration;
@end
到此 两种方式公开类的私有成员我们都可以知道吧。当然访问和设定都是可以[[类 开辟内存(alloc)] init]; [事例的类对象 title];或者 .
ios 类的构造方法
object-c的构造函数和java\c#的方式是不同的。
最重要一点 ,object-c中的修饰符只能在成员变量前加。(public 、protected、private)
@public 作用域限定的实力变量,可以在任何情况下访问;
@private 作用域限定的实力变量,只能在这个类里面才可以访问;
@protected 作用域限定的实力变量,可以在这个类里面和这个类的派生类里面可以访问这个变量,在类外的访问是不推荐的,但也可以访问。
object-c面向对象2的更多相关文章
- Object Pascal 面向对象的特性
2 面向对象的特性 在软件系统开发过程中,结构分析技术和结构设计技术具有很多优点,但同时也存在着许多难以克服的缺点.因为结构分析技术和结构设计技术是围绕着实现处理功能来构造系统的,而在系统维护和软件升 ...
- OO(object oriented面向对象)
面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP 一.OO - Object-Oriented(面向对象) 对象代表真实或抽象的事物,有一个名字(唯一标识), ...
- 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...
- PHP学习 Object Oriented 面向对象 OO
定义类class class_name [extends partclass_name]{public private protected var property_name = value;publ ...
- JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等
一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...
- C语言面向对象的简便方法
都知道C语言是面向过程的,但是现在软件规模越来越大,通过面向对象的方式可以简化开发.业余时间想了个简单的方法,在C中使用一部分面向对象的基本功能.由于C语言自身的限制,并不完善,只能将就用,聊胜于无, ...
- 【Java基础】【11Eclipse使用&Object类型】
11.01_Java开发工具(常见开发工具介绍)(了解) A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environme ...
- Java【第六篇】面向对象基础
类和对象 面向对象的概念 面向过程 核心是过程二字,过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式: 面向对象 核心就是对象二字,对象就是特征与技能的结合体,利用“类”和“对象”来创建各种 ...
- 15_常用API_第15天(Object、String、StringBuffer、用户登陆注册)_讲义
今日内容介绍 1.Object 2.String 3.StringBuilder 01API概念 A:API(Application Programming Interface) 应用程序编程接口 B ...
- 6、Object、String、StringBuffer
Java的Api以及Object类 API概念 * A:API(Application Programming Interface) * 应用程序编程接口 * B:Java API * 就是Java提 ...
随机推荐
- js库中$冲突的解决方法
http://www.w3school.com.cn/jquery/core_noconflict.asp
- 【BZOJ 1013】【JSOI2008】球形空间产生器sphere 高斯消元基础题
最基础的高斯消元了,然而我把j打成i连WA连跪,考场上再犯这种错误就真的得滚粗了. #include<cmath> #include<cstdio> #include<c ...
- 【CodeForces 557B】Pasha and Tea
题 题意 总共有 w 克蛋糕,2n 个盘子,第 i 个盘子容量为 ai ,n 个女孩和 n 个男孩,男孩得到的是女孩得到的蛋糕的两倍,求他们得到蛋糕的最大值. 分析 把盘子从小到大排序,然后 女生得到 ...
- 20.(转)Android的样式(Style)和主题(Theme)
Android上的Style分为了两个方面: 1,Theme是针对窗体级别的,改变窗体样式: 2,Style是针对窗体元素级别的,改变指定控件或者Layout的样式. Android系统的themes ...
- BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3543 Solved: 1953 [Submit][Statu ...
- NOI题库 09:图像旋转翻转变换
NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此 09:图像旋转翻转变换 总时间限制: 1000ms 内存限制: 65536kB 描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作 ...
- mysql 设置编码 Incorrect string value: '\xE9\x98\xBF\xE4\xB8\x89...' for column 'cont,mysql乱码
首先这个是编码的问题 --细致的分割---------------------------------------------------------------------------------- ...
- mac下使用minicom
各种艰辛就不一一表过了,反正最后无奈的有捡起了minicom. 因为使用的brew,所以安装相对比较容易: brew install minicom 和Linux下一样的操作,先是查看硬件设备名称: ...
- IOS 面试
1. #import , #include的区别 @import防止类的重复引用,#import 确定一个文件只能被导入一次,这使在递归包含中不会出现问题. @class一般用于头文件中需要声明该类的 ...
- FOJProblem 2214 Knapsack problem(01背包+变性思维)
http://acm.fzu.edu.cn/problem.php?pid=2214 Accept: 4 Submit: 6Time Limit: 3000 mSec Memory Lim ...