类,对象,方法

命名规则

制定名称的规则:名称必须以字母和下划线开头,之后可以是任何字母,下划线和0~9的数字组合。

以下名称是非法的;

1.sum$value————$是非法字符

2.piece flag————名称中间不能有空格

3.3Spencer————名称不能以数字开头

4.int ————int保留字

命名类的时候,类名通常以大写字母开头。另一方面,实例变量,对象,以及方法的名称时,通常以小写字母开头。为使程序具有可读性,名称中要用大写字母表示新单词的开头。例如:

AddressBook————可能是一个类名

currentEntry————可能是一个对象

current_entry————可以用下划线作为单词的分隔

addNewEntry————可能是一个方法名

编程时要注意名称的制定规则会大大增强程序的自解释性。


实例和方法

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

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

格式为:

[receiver  message]

左括号后紧跟类的名字或者该类的实例的名字,后面是一个或多个空格,空格后面是将要执行的方法。

以分数类为例介绍oc的类,对象和方法代码如下:

#import <Foundation/Foundation.h>

@interface Fraction : NSObject
-(void) print;
-(void) setNumerator:(int) n;
-(void) setDenominator:(int) d;
-(int) numerator;
-(int) denominator;
@end



@implementation Fraction       //可以写成@implementation Fraction:NSObject但是会有警告
{
    int numerator;   //实例变量
    int denominator;  //实例变量
}//实例变量也可以写到@interface中
-(void) print
{
    NSLog(@"%i/%i",numerator,denominator);
}
-(void) setNumerator:(int) n
{
    numerator=n;
}
-(void) setDenominator:(int) d
{
    denominator=d;
}
-(int) numerator
{
    returnnumerator;
}
-(int) denominator
{
    returndenominator;
}
@end
int main(int argc, const char * argv[])
{
    
    @autoreleasepool {
        Fraction* myFaction;
        myFaction=[Fraction alloc];
        myFaction=[myFaction init];
        //以上可以写成Fraction *myFraction=[[Fraction alloc]init];
        [myFaction setNumerator:1];     //消息发送给指针
        [myFaction setDenominator:3];
        NSLog(@"\nThe value of myfraction is:");
        [myFaction print];
        NSLog(@"The value of myFraction is:%i/%i",[myFactionnumerator],[myFaction denominator]);
    }
    return 0;
}


运行结果为:


@interface部分用于描述类和类的方法,也可以在这里为类声明实例变量;

定义新类时,首先要告诉编译器该类来自何处(必须以他的父类命名);并且定义处理该类的对象时的各种方法或操作的类型;还会列出一些元素,称为属性。

格式为:

@interface NewClassName:ParentClassName
<span style="white-space:pre">	</span>propertyAndMethodDeclarations;
@end


类方法和实例方法

方法声明开头为负号(-)告诉编译器该方法是一个实例方法,能够对类实例进行一些操作,可以直接访问它的实例变量,例如设置值,检索值。

方法声明开头为正号(+)告诉编译器该方法是一个类方法,能够对类本身进行一些操作,不可以访问类实例,例如创建类的新实例。

-(void) setDenominator:(int) d;

负号表示方法类型;

(void)表示返回类型

setDenominator表示方法名称;

:表示方法有参数;

(int)表示参数类型;

n表示参数名字;

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

print引用的实例变量包含在作为作为消息接受者的对象中;

program部分实现程序的目的

prgram可以跨越多个文件

alloc方法继承自一个父类,在内存中为它保留足够的空间用于存储对象数据,返回储存数据的位置,保证对象的所有实例变量都变成初始状态,然而并不是说明该对象已经进行正确的初始化以供使用。

init方法用于初始化类的实例变量,init消息发送给类的实例而非是类,返回一个初始化的对象。

new方法可以将alloc和init操作结合起来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值