黑马程序员——Objective-C中的类与对象

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

1、类和和对象的概念

【1】将现实中人们要研究或计算的任何事物的相关属性和行为封装起来,就是对象(个人总结,如果有误请谅解);

【2】类是抽象的对象,对象是具体化的类。换种说法就是类相当于对象的图纸,用来描述一种事物,也就是说要创建对象就得先有类;


2、如何设计类和对象

【1】对象:对我们要研究或计算的事物进行分析,从中抽取出我们需要的相关属性行为

用MJ老师课堂上讲过的例子,如何创造汽车对象:

a)需要先有汽车的建造图纸,图纸上描述清楚汽车应该具备的属性和功能(行为)

属性:轮子数、时速

行为:跑

b)       然后再根据图纸上的描述生成汽车

c)       每一辆汽车都是对象,都有自己具体的属性值,都是图纸的实例

d)       图纸是抽象的,汽车是具体的。图纸是对汽车对象的高度概括


【2】类:拥有相同属性和行为的事物都可以抽象出一个类,类除了定义属性和行为还要有一个类名(事物名称);


3、OC中类和对象的创建

【1】如何创建OC中的类


OC中的类的创建分为两个步骤:

1)类的声明

a)抽象过程:定义一个车类,拥有2个属性:轮子数、时速,1个行为:跑

b)类名、属性名和方法名遵守规则:准确,且可读性强。其中类名的首字母应大写

c)类的生命以@interface开始(具体书写格式见例程1);

d){ }中声明的变量,称为成员变量。默认值为0;

e)必须以@end为结束标志,类拥有的方法}@end之间进行声明(声明中不包含实现);

// 例程1 类的声明
@interface Car : NSObject
{
int wheels; //  轮子
int speed; //  速度
}
- (void)run; //  跑的行为
@end

2)类的实现

a)以@implementation开始(具体书写格式见例程2);

// 例程2 类的实现
@implementation Car
- (void) run
{
NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end

【2】如何创建OC中的对象

利用NSObject类共有的new方法,new方法每次都会创建出新的对象,指针car1用来指向新创建出来的Car类的对象(见例程3)。

//  例程3
Car *car1;
Car1 = [Car new];

通常我们把两句合成一句来写,使代码看起来更加简洁(见例程4)。

//  例程4
Car *car1 = [Car new];


4、类的声明与实现的意义


@interface就像钟表的表面;

@implementation 就像钟表内部元件组成的机械;



5、类方法与对象方法

    对象方法
        1. 以“-”开头
        2. 只能由对象调用
        3.可以调用成员变量
    类方法
        1. 以“+”开头
        2. 只能有类名来调用
        3.  OC中的方法允许对象方法跟类方法重名
        4. 不能调用成员变量

关于类不能调用成员变量的个人见解:

        类就像图纸,对象就像产品。
        类方法是写在图纸上的,所以它没有产品拥有的零部件(成员变量);
        对象方法才能拥有自己的零部件(成员变量);

        所以类方法可以传外界的参数写进去实现,但本身不包含成员变量,没有的东西自然不能调用成员变量了;
        对象方法除了传进去的形参以外,还包含了自身拥有的成员变量,所以就可以调用成员变量了;

        类方法的效率更高,所以一般来讲只要不需要调用自己的成员变量的(类是抽象的东西,当然没有成员变量)就尽量用类方法来实现。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值