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];

行笔匆匆,难免遗漏,如有不当,多多指教,先行谢过~  

作者:FlyElephant
出处:http://www.cnblogs.com/xiaofeixiang

Object-C面向对象之实现类的更多相关文章

  1. Object Pascal 面向对象的特性

    2 面向对象的特性 在软件系统开发过程中,结构分析技术和结构设计技术具有很多优点,但同时也存在着许多难以克服的缺点.因为结构分析技术和结构设计技术是围绕着实现处理功能来构造系统的,而在系统维护和软件升 ...

  2. day20面向对象三大特性 , 类嵌套

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.简述面向对象三大特性并用代码表示."""封装:class Account: ...

  3. python中的面向对象学习以及类的封装(这篇文章初学者一定要好好看)

    这篇文章对于初学者可以很有效的理解面对过程.面对对象 一.首先介绍一下面向过程和面向对象的比较: 面向过程 VS 面向对象 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何 ...

  4. Python面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  5. Python面向对象总结及类与正则表达式

    Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变 ...

  6. Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

    一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...

  7. python学习笔记(七):面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  8. 面向对象:元类、异常处理(try...except...)

    元类: python中一切皆对象,意味着: 1. 都可以被引用,如 x = obj 2. 都可以被当做函数的参数传入 3. 都可以被当做函数的返回值 4. 都可以当做容器类的元素(列表.字典.元祖.集 ...

  9. Python面向对象-概念、类、实例

    OOP——Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...

  10. Python面向对象06 /元类type、反射、函数与类的区别、特殊的双下方法

    Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3 ...

随机推荐

  1. 如何嗅闻交换网络和ARP骗子-ARP解释的原则

    在嗅探以太网(一般指嗅探器可以对流经的网络数据包窃听)(sniff)不为网络安全是好事,虽然网络管理员能够跟踪数据包,发现 互联网问题,但前提是,如果破坏者使用.在整个网络带来了严重的安全威胁. 至于 ...

  2. hdu 3076 ssworld VS DDD (概率dp)

    ///题意: /// A,B掷骰子,对于每一次点数大者胜,平为和,A先胜了m次A赢,B先胜了n次B赢. ///p1表示a赢,p2表示b赢,p=1-p1-p2表示平局 ///a赢得概率 比一次p1 两次 ...

  3. Sass 基础和入门

    css本身很有趣,但是随着样式表变大,会越来越复杂,更加难以管理.css预处理器在这里就能帮上忙了.SASS 让你使用在css中不存在的特性,譬如变量.嵌套.mixins(混入),继承和一些其他好的特 ...

  4. 将android界面背景设置为黑色

    屏幕背景设置为黑色的几种方式: 新建项目时候 第二次next之后(不同sdk版本号可能不同),Background Color项点击可选. 开公布局文件,选择视图查看 就是下边二个选项卡中的第一个(G ...

  5. UVa 699 落叶

    意甲冠军:我几乎不记得的题意!.! 它是一个长坑..我们从根节点开始,留下每一步,保存横坐标1,正确的一步加上横坐标1. 那么同样的横坐标统计data值总和. 思维:我来想,这可以递归成就.上就能够算 ...

  6. Android用户界面设计:框架布局(转)

    摘要:框架布局是Android开发者组织视图控件最简单和最有效的布局之一.通过本文,你将学到所有关于框架布局的知识,它们主要用来在屏幕上组织特别的或重叠的视图控件.使用得当的话,很多有趣的Androi ...

  7. MySQL分页实现

    mysql> select pname from product; +--------+ | pname  | +--------+ | 产品1  | | 产品2  | | 产品三 | +--- ...

  8. Group By去除重复数据

    今天在写一个sql,目的是去除表里某一个字段相同的数据,只保留最新的一条.之前group by 用的少.特此记录一下. SELECT * FROM litb_approval_task SELECT ...

  9. 无法打开物理文件mdf,操作系统错误 5:&quot;5(拒绝訪问。)&quot;

    无法打开物理文件mdf,操作系统错误 5:"5(拒绝訪问.)" 环境: SQL Server 2008 R2 问题: 附加数据库时报错"无法打开物理文件mdf.操作系统错 ...

  10. Linux互斥和同步应用程序(一):posix线程和线程之间的相互排斥

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流.请勿用于商业用途] 有了进程的概念,为何还要使用线程呢? 首先,回 ...