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:

 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

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

ios  类的构造方法

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

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

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

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

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

时间: 2024-11-04 22:12:51

object-c面向对象2的相关文章

OO(object oriented面向对象)

面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP 一.OO - Object-Oriented(面向对象) 对象代表真实或抽象的事物,有一个名字(唯一标识),有明确的职责(well-defined responsibilities),展示良好的行为(well-defined behavior),接口清晰,并且尽可能简单.自相容,内聚,完备(self-consistent,coherent,and complete). 基于对象概念,以对象为中心,以类和继

【IOS 开发】Object - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

一. Object-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber : -- 通用包装类 NSValue : NSValue 包装单个 short, int, long, float, char, id, 指针 等数据; -- NSNumber 包装类 : 用于包装 C 语言数据类型; NSNumber 方法 : -- "+ numberWithXxx :" : 将特定类型的值包装成 NSNumber; -- "- initWithX

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定义 (1) 接口部分定义格式 接口部分定义格式 : @interface className : superClassName { type _variableName; ... ... } - (type) methodName : type parameterName; @end -- 接口定义

PHP学习 Object Oriented 面向对象 OO

定义类class class_name [extends partclass_name]{public private protected var property_name = value;public private protected function method_name (){}} 创建对象$Obj = new Employee(); //使用->访问对象成员 $Obj->Name = 'Flower';$Obj->ShowName(); Static 关键字 纯粹一般用途c

Java面向对象理论篇(上)总结

面向对象:(学习王伟.传智等教程) 1.1)面向对象 面向对象是基于面向过程的编程思想 1.2)面向对象的思想特点 1.2.1)是一种更符合我们思考习惯的思想 1.2.2)把复杂的事情简单化 1.2.3)让我们从执行者变成了指挥者 2)类与对象 2.1)类(class)和对象(object)是面向对象方法的核心概念.类是对一类事物描述,是抽象的.概念上的定义:对象是实际存在的该类事物的每个个体,因而也称实例(instance). 2.2)Java语言中最基本的单位是类.所以,我们要用类来体现事物

黑马程序员-Java面向对象上《二》

                         ------- android培训.java培训.期待与您交流! ---------- 1.面向对象的设计思想  面向过程:是以一个流程为单位,考虑它的实现方法,关心的是它的功能实现. 面向对象:是以具体事物为单位,考虑它的属性(特征)和动作(行为). 2.面向对象思考问题的方式 有哪些对象? 对象有什么特征和功能? 对象之间的关系? 3.类和对象 3.1,面向对象的编程思想:是力图使计算机语言中对事物的描述尽可能的与现实中的该事物的本来面目一致

C语言面向对象的简便方法

都知道C语言是面向过程的,但是现在软件规模越来越大,通过面向对象的方式可以简化开发.业余时间想了个简单的方法,在C中使用一部分面向对象的基本功能.由于C语言自身的限制,并不完善,只能将就用,聊胜于无,如果大家有好的想法可以一起讨论. 首先还是老规矩上代码: http://files.cnblogs.com/GhostZCH/object.rar 面向对象有三个基本属性:封装.继承和多态. 此处一一讲解处理方法. 1. 封装,基本思想就是用结构体代替类,属性没什么好说的,方法就麻烦点只能用函数指针

Java面向对象学习

/*package com.fish.object; java面向对象的语言 对象:真实存在唯一的事物.比如我家的狗 类: 实际就是对某种类型事物的共性属性与行为的抽取.  抽象的概念....   车 类---->图纸  对象--->真实存在的事物 我们从小的时候就不断的接触很多的对象,我们的大脑就会把 这些具备相同属性与行为的事物进行分类. 在现实生活中就存在对象与类这两种事物.计算机是服务于人类,为了让计算机更加接近我们的 生活,这时候就出现了面向对象的计算机语言. 面向过程(C)    

java object

###11.16_常见对象(API概述)* A:API(Application Programming Interface) * 应用程序编程接口* B:Java API * 就是Java提供给我们使用的类,这些类将底层的实现封装了起来, * 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用. ###11.17_常见对象(Object类的概述)* A:Object类概述 * 类层次结构的根类 * 所有类都直接或者间接的继承自该类* B:构造方法 * public Object() *

【JAVA编程】 面向对象 OOP (一)

面向对象的概念: ----------------------- 面向对象编程 OOP:Object Oriented Programming 面向过程编程 OOA:Oriented object analyze 面向对象设计 OOD:Oriented object design 对象: 类: 封装:encapsulation 继承:inheritance 多态:polymorphism 属性(成员变量): 行为(成员函数): 堆:heap 数组和对象在堆中 栈:stack 方法在栈中 成员变量