黑马程序员-IOS学习笔记(四)类、对象和方法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------

类、对象和方法:

类的独特存在就是一个实例,对实例执行的操作称为方法。在某些情况下,方法可以应用于类的实例或类本身。

对象使用方法可以影响对象的状态。

关键概念:对象是类的独特表示,每个对象都包含一些通常对该对象来说是私有的信息(数据)。方法提供访问和改变这些数据的手段。

 

Objective-C采用特定的语法对类和实例应用方法:

[ ClassOrInstance method];

 

请求一个类或实例来执行某个操作时,就是向它发送一条消息,消息的接收者称为Receiver。所以,可以用另外一种方式描述:

[ receiver message];

 

程序在逻辑上分为下面3个部分:

@interface

@implementation

program

 

@interface部分用于描述类和类的方法;

@implementation部分用于描述数据(类对象的实例变量存储的数据),并实现在接口中声明方法的实际代码;

program部分的程序代码实现了程序的预期目的。

 

@interface部分一般格式如下:

@interface NewClassName: ParentClassName

propertyAndMethodDeclarations;

@end

 

按照约定,类名以大写字母开头。实例变量、对象以及方法的名称,通常以小写字母开头。确定名称时,要遵循找到能反映变量或对象使用意图的名称。程序具有更强的自解释性(Self-explanatory)

制定名称的规则相当简单:名称必须以字母或下划线(_)开头,之后可以使任何大小写字母、下划线或者数字的组合。另外像$空格等都是非法,记住不能数字开头、不能使用保留字。

 

再次强调,Objective-C是大小写敏感的。sum和Sum是两个东西。

类或实例方法,开头为负号(-)表示实例方法,正号(+)表示类方法。

返回类型放在开头的负号或正号之后的圆括号中。有参数时,在方法名后加冒号(:),再加上参数类型和参数名。具体的如下例所示:

-(int) currentAge;

-(void) print;

-(void) setNumber: (int) n;

 

@implementation部分的一般格式如下:

@inplementation NewClassName

{

memberDeclarations;

}

methodDefinitions;

@end

需要注意的是:使用@synthesize指令能让编译器自动为你生成一些方法。

 

alloc是allocate的缩写。如果向某个类发送alloc消息,便获得该类的新实例。这个alloc方法继承自父类。alloc方法保证对象的所有实例都变成初始状态。当然想要适当的方法时,必须重新初始化,调用init方法。经常地情况是把alloc和init合在一起,或者直接使用new方法。例如:

Fraction *myFraction;

myFraction = [Fraction alloc];//类方法

myFraction = [myFraction init];//实例方法

 

Fraction *myFraction = [[Fraction alloc]init];//二合一

 

Fraction *myFraction = [Fraction new];//类方法,new包含alloc和init

 

记住,方法执行的上下文环境就是接收到消息的对象。

取值方法(get)和赋值方法统(set)称为访问方法(accessor)。

 

//

// main.m

// 3_2_class_object_method

//

// Created by forlong401 on 12-12-21.

// Copyright (c) 2012年 forlong401. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

//-------- @interface section ----------

@interface Fraction: NSObject

-(void) print;

-(void) setNumerator: (int) n;

-(void) setDenominator: (int) d;

@end

 

//-------- @implementation section----------

@implementation Fraction

{

   int numerator;

   int denominator;

}

-(void) print

{

   NSLog(@"%i/%i", numerator, denominator);

}

-(void) setNumerator:(int)n

{

   numerator = n;

}

-(void) setDenominator:(int)d

{

   denominator = d;

}

@end

 

//-------- program section ----------

 

int main(int argc, const char * argv[])

{

 

   @autoreleasepool {

       Fraction *myFraction;

       

       // new object

       myFraction = [Fraction alloc];

       myFraction = [myFraction init];

       

       // set

       [myFraction setNumerator: 1];

       [myFraction setDenominator: 3];

       

       // print all

       NSLog(@"Hello, World!");

       [myFraction print];

    }

   return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值