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提 ...
随机推荐
- TRUNC函数,ORA-01898 精度说明符过多
TRUNC(SYSDATE)即可默认当前日期(年月日),TRUNC(SYSDATE,'yyyy-mm-dd'),精度说明符过多
- hdu1873优先队列
#include<stdio.h> #include<queue> using namespace std; struct node { int id; int val; fr ...
- iOS之单例
今天在看多线程同步时,突然想到了单例的同步问题.自从dispatch_once出现后,我们创建单例非常简单且安全: static dispatch_once_t pred; static Single ...
- hdu 3068 最长回文子串 马拉车模板
前几天用后缀数组写过一次这题,毫无疑问很感人的TLE了-_-|| 今天偶然发现了马拉车模板,O(N)时间就搞定 reference:http://acm.uestc.edu.cn/bbs/read.p ...
- USACO 3.2 msquare 裸BFS
又是个裸BFS... 和西安网赛那道1006一样的,只不过加上了要记录方案.顺便复习map 记录方案直接在bfs队列的结点里加一个vector<int> opt,把从开头一直到当前结点的操 ...
- POJ1995 Raising Modulo Numbers
Raising Modulo Numbers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 6373 Accepted: ...
- IQ测试
1.4个人过桥,只能两两过桥,且只有一盏灯,必须有灯才能过桥,4个人过桥时间分别为1,2,5,10分钟,最短多少时间可以过桥? 答案:1和2先走,1再返回,花3分钟.5和10走,2回去,花了3+10+ ...
- MyEclipse------如何添加jspsmartupload.jar+文件上传到服务器
下载地址:http://download.csdn.net/detail/heidan2006/182263 如何添加jspsmartupload.jar:右键“Web”工程->properti ...
- C文件操作(全)
引用自:http://www.cnblogs.com/whiteyun/archive/2009/08/08/1541822.html 文件 文件的基本概念 所谓“文件”是指一组相关数据的有序集合. ...
- linux下忘记密码怎么办,如何重置密码
文章转自:http://www.2cto.com/os/201104/86881.html 以下是网上的方法,我用的是第一种方法,经测试有效. 方法一:# /etc/init.d/mysql stop ...