Object-C面向对象之实现类
Object-C面向对象之实现类
一般涉及到面向对象都会C#,Java都不可避免的涉及到类,C#中类的后缀名是.cs,Java中是.java,Object-C中一般用两个文件描述一个类,后缀名为.h为类的声明文件,用于声明成员变量和方法,.m文件主要用于实现声明中的方法,Java和C#声明类用的是Class关键字,OC声明类用的字@interface和@end,实现类用的是@implementation和@end,跟其他的有点不同,方法定义,方法调用都不太一样,具体一点点的看吧:
新建Cocoa Class:
语言选择OC,类名Book:
Book.h中的代码:
1
2
3
4
5
6
7
8
9
10
11
|
#import <Foundation/Foundation.h> @interface Book : NSObject { NSString *_author; NSString *_publishDate; } @property int Number; - ( void )getDetial; @end |
Book.m中的代码:
1
2
3
4
5
6
7
8
9
|
#import "Book.h" @implementation Book @synthesize Number; -( void )getDetial { NSLog (@ "论程序员的职业素养" ); } @end |
main函数中的调用:
1
2
3
4
|
Book *book=[Book new ]; [book getDetial]; book.Number=100; NSLog (@ "图书的数量为:%d" ,book.Number); |
这里的代码暂时先不分析,看下另外一段代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
typedef enum { man, woman } Sex; @interface Person : NSObject { @public NSString *Name; NSString *School; Sex sex; int Age; } - ( void )say; - ( int )sum:( int )numA secondNumber:( int )numB; @end @implementation Person - ( void )say { NSLog (@ "多说多错,少说少错" ); } -( int )sum:( int )numA secondNumber:( int )numB { return numA+numB; } @end |
main函数中的调用,具体代码如下:
1
2
3
4
5
6
7
8
9
|
Person *person=[Person new ]; person->Age=25; person->sex=man; NSLog (@ "年龄:%d,性别为:%@" ,person->Age,@ "测试" ); [person say]; int b=[person sum:10 secondNumber:10]; NSLog (@ "两个数字相加的和是:%d" ,b); |
类中的成员变量都是在{}中的,如果初始化类的时候想要调用的话直接使用->符号进行访问,前提是变量的作用域可以访问,一般来说作用范围是@public,@protected,@private,如果接触过其他语言,public都可以访问,protected是父类和子类都可以访问,private是类本身中才可以访问。
C#通过操作属性来保护字段,OC中也可以,所以第一段代码就出现了@property和@synthesize;
方法定义+表示类方法也就是静态方法,-是对象方法:
1
|
-( int )sum:( int )numA secondNumber:( int )numB |
int 是返回值类型,方法后面跟一个函数就是:(类型)名称,如果是多个就空格之后重复,跟上面一样,很好理解;new其他语言中用的很多,不过一般新建一个对象的形式是:
1
|
Person *person=[[Person alloc] init]; |
行笔匆匆,难免遗漏,如有不当,多多指教,先行谢过~
出处:http://www.cnblogs.com/xiaofeixiang
Object-C面向对象之实现类的更多相关文章
- Object Pascal 面向对象的特性
2 面向对象的特性 在软件系统开发过程中,结构分析技术和结构设计技术具有很多优点,但同时也存在着许多难以克服的缺点.因为结构分析技术和结构设计技术是围绕着实现处理功能来构造系统的,而在系统维护和软件升 ...
- day20面向对象三大特性 , 类嵌套
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.简述面向对象三大特性并用代码表示."""封装:class Account: ...
- python中的面向对象学习以及类的封装(这篇文章初学者一定要好好看)
这篇文章对于初学者可以很有效的理解面对过程.面对对象 一.首先介绍一下面向过程和面向对象的比较: 面向过程 VS 面向对象 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何 ...
- Python面向对象编程、类
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...
- Python面向对象总结及类与正则表达式
Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变 ...
- Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法
一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...
- python学习笔记(七):面向对象编程、类
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...
- 面向对象:元类、异常处理(try...except...)
元类: python中一切皆对象,意味着: 1. 都可以被引用,如 x = obj 2. 都可以被当做函数的参数传入 3. 都可以被当做函数的返回值 4. 都可以当做容器类的元素(列表.字典.元祖.集 ...
- Python面向对象-概念、类、实例
OOP——Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...
- Python面向对象06 /元类type、反射、函数与类的区别、特殊的双下方法
Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3 ...
随机推荐
- OpenCV2学习笔记(十四):基于OpenCV卡通图片处理
得知OpenCV有一段时间.除了研究的各种算法的内容.除了从备用,据导游书籍和资料,尝试结合链接的图像处理算法和日常生活,第一桌面上(随着摄像头)完成了一系列的视频流处理功能.开发平台Qt5.3.2+ ...
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
- 飞天熊猫游戏源代码android文本
这款游戏是前一段时间完毕的一个项目,飞行熊猫游戏源代码android版.飞行熊猫基于cocos2d游戏引擎开发.包含了谷歌admob广告支持,没有不论什么版权问题.大家能够自由改动和上传应用商店. 1 ...
- Android 4.4(KitKat)表格管理子系统 - 骨架
原文地址:http://blog.csdn.net/jinzhuojun/article/details/37737439 窗体管理系统是Android中的主要子系统之中的一个.它涉及到App中组件的 ...
- JavaScript循环之for/in循环
今天学到了JavaScript的语句篇.同其他常见编程语言如C.Java等一样,JavaScript中的语句包含:①表达式语句②复合语句和空语句③声明语句④条件语句⑤循环语句⑥跳转语句,当然JavaS ...
- cocos2d-x-2.2的SimpleAudioEngine::sharedEngine()->playEffect()计划中断bug
在该计划已经正常,但现在突然发iphone播放声音上就挂了.播放音乐是没有问题的. android没问题. xcode给定的位置,如下面的附图: 网上搜了一下,说是有全局断点造成的.于是command ...
- MySQL定义和变量赋值
变量可以在子程序(性能.存储过程.匿名块)声明和使用.这些变量的范围是在BEGIN...END规划. 变量的定义 语法格式: DECLARE var_name [, var_name]... data ...
- 利用css新属性appearance优化select下拉框
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ASPNETPager常用属性
<webdiyer:AspNetPager ID="pager" runat="server" class="page" FirstP ...
- 【百度地图API】建立全国银行位置查询系统(五)——如何更改百度地图的信息窗口内容?
原文:[百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 摘要: 酷讯.搜房.去哪儿网等大型房产.旅游酒店网站,用的是百度的数据库,却显示了自定义的信息窗口内容,这是 ...