Objective C语言----类,对象,方法总结

Objective C语言--------------类,对象,方法总结

 

注:以下所总结的知识点内容需要举例说明的,均以第3题的学生类为示例说明.

 

1.类和对象的概念?并举出具体的实例.

       类:类就是一系列属性与方法的集合(是具体事物的抽象).

       对象:对象就是该类事物实实在在存在的个体.

OC中利用类来创建对象,对象是类的具体存在, 因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象.

       类与对象的关系:相当于汽车图纸与实物汽车之间的关系.

       在上面的举例中,图纸就相当于类,而汽车就相当于对象.也就是说,想创建对象,必须现有类.

 

2..h头文件的作用,.m文件的作用.

       .h文件:头文件,头文件包含属性与方法的声明;

       .m文件:类的实现文件,参与编译的文件,用来实现类中声明的方法.

 

3.假设有一个学生类,如何定义这个类(实例变量/属性,方法/行为).

       实例变量:姓名,年龄,身高

       方法:学习,玩

       学生类的定义方法如下:

声明文件:Student.h中的内容如下:

#import <Foundation/Foundation.h>

 

@interface Student : NSObject

{

    NSString *_name;

    NSInteger _age;

    NSInteger _height;

}

 

// 自定义初始化方法

- (id)initWithName:(NSString *)name withAge:(NSInteger)age withHeight:(NSInteger)height;

 

// set方法的声明

-   (void)setName:(NSString *)name;

// get方法的声明

- (NSString *)name;

 

- (void)setAge:(NSInteger)age;

- (NSInteger)age;

 

- (void)setHeight:(NSInteger)height;

- (NSInteger)height;

 

// 实例方法的声明

- (void)study;

 

+ (void)play;

 

@end

 

实现文件:Student.m中的内容如下:

#import"Student.h"

 

@implementation Student

- (id)initWithName:(NSString *)name withAge:(NSInteger)age withHeight:(NSInteger)height

{

    self = [super init];

   

    if (self != nil) { // 如果父类初始化失败,则返回nil

        //程序进入if语句体,说明父类初始化成功,我们开始初始化子类特有的东西

        _name = name;

        _age = age;

        _height = height;

    }

    // 返回self

    return self;

}

 

//set方法的实现

- (void)setName:(NSString *)name

{

    _name = name;

}

//get方法的实现

- (NSString *)name{

    return _name;

}

 

- (void)setAge:(NSInteger)age

{

    _age = age;

}

- (NSInteger)age

{

    return _age;

}

 

- (void)setHeight:(NSInteger)height

{

    _height = height;

}

- (NSInteger)height

{

    return _height;

}

 

//实例方法的实现

+ (void)play

{

    NSLog(@"Student need play!");

}

 

- (void)study

{

    // 在类的方法实现中可以传入参数

    NSLog(@"%@的学习很刻苦!^_^ ",_name);

}

@end

 

 

4.set方法,get方法的作用是什么?

       (1)给成员变量赋值提供一个set(设置器setter)方法

              a.一定是实例方法;

              b.返回值一定是void的;

              c.一定以set开头,后面跟成员变量名,去掉下划线,首字母大写;

              d.一定有参数,并且参数类型和成员变量类型一致,参数名称和成员变量名称去掉下划线时相同.

 

          示例: - (void)setNmae:(NSString *)name;

 

       (2)获取成员变量的值提供一个get(访问器getter)方法

              a.一定是实例方法;

              b.一定有返回值,并且返回值类型和成员变量类型一致;

              c.方法名称和成员变量名称去掉下划线时一致;

              d.一定没有参数.

 

          示例: - (NSString *)name;

 

       (3)成员变量以下划线开头的好处

              a.可以和局部变量区分开来;

              b.可以和方法的参数区分开来

              c.只要打下划线就可以找到成员变量;

              d.iOS程序员都按照这个规则写,提高了代码的阅读性,降低了沟通成本.

 

          示例:    NSString *_name;

 

       (4)在开发中有时候只提供get方法,称之为只读属性;若只提供set方法,称之为只写属性(一般不用,只写不读没有意义).

 

5.OC中方法分为几种类型,有什么区别?

       OC中的方法分为两种:实例方法(对象方法)和类方法

(1) 实例方法

a.    实例方法以”-”开头;

b.    只能由对象调用;

c.     实例方法中可以访问成员变量;

d.    实例方法中可以调用类方法.

 

          示例: - (void)study;

 

       (2)类方法

          a. 类方法以”+”开头;

          b. 只能由类名调用;

          c. 类方法不可以访问成员变量;

          d. 类方法不可以调用实例方法;

          e. 类方法可以调用类方法(同名的除外).

 

    示例:+ (void)play;

 

       (3)区别:

a.    在类方法中可以调用类方法;在对象方法中也可以调用类方法;在类方法中不能调用实例方法;

b.    在类方法中不能调用同名的类方法,否则会造成死循环;

c.     允许有同名的实例方法和类方法,系统通过”+”和”-”区分;

d.    类方法的使用场合:类方法中没有使用到成员变量的时候尽量使用类方法;

e.    类方法的优点:

①  执行效率高(实例方法:先找到对象,再通过isa指针找到方法;类方法:直接找到方法);

②  优化内存(类方法不需要创建对象);

③类方法一般用于编写工具方法.

 

6.如何自定义初始化方法?

       (1)重写NSObject的init初始化方法的注意点

              a.一定要调用super的init方法,先初始化父类的东西

              b.一定要判断self是否为nil;

              c.一定要返回self.

       (2)代码示例

- (id)initWithName:(NSString *)name withAge:(NSInteger)age withHeight:(NSInteger)height

{

     self = [super init];

   

    if (self != nil) { // 如果父类初始化失败,则返回nil

        //程序进入if语句体,说明父类初始化成功,我们开始初始化子类特有的东西

        _name = name;

        _age = age;

         _height = height;

    }

    // 返回self

    return self;

}   

(2) init方法的作用:用于对类的成员变量进行初始化.

示例:    Student *student = [[Student alloc]initWithName:@"zhangsan" withAge:23 withHeight:180];

 

7.解释self,super,id.

       (1)self

self可以代表本类也可以代表本类对象,比较灵活,当在类中调用方法时,首先从当前类中查找相应方法,如果找不到,则到父类中查找.

              a.谁调用这个方法,self就代表谁;

              b.在实例方法中,self可以调用其它实例方法;

              c.self在实例方法中,self代表当前对象;

              d.self在类方法中,self代表类;

              e.self在实例方法中,可以利用”self -> 属性名称”的方式访问成员变量;

              f.[self 方法名称]:调用其它方法(实例方法/类方法);

              g.在实例方法中,不能利用self调用和自己同名的实例方法,会造成死循环;

              h.在类方法中不能利用self调用和自己同名的类方法,会造成死循环;

              i.g和h总结一句话就是:在使用self的过程中,”一定不能自己搞自己”.


       (2)super

       super并不是父类,它只是一个”编译器指示符”,在子类中使用它调用父类方法时,首先从子类继承的父类中查找相应方法,如果找不到,到父类继承的类中查找,直到根类,如果找不到则报错.

       super就是一个障眼法,编译器符号.它可以替换成[self class],只不过方法是从self 的超类开始寻找.


       (3)id

       id是一个指针,指向任何一个继承了Object(或者NSObject)类的对象.所以在OC中id是一个通用类型,可以表示任何一个对象.

       在OC中,id是万能指针,id =NSobject *

 

8.解释点语法的作用.

       (1)OC语言中方法调用的语法:[对象 方法名];

       (2)点语法:使用符号点”.”调用某个对象的方法,语法:对象.方法名;

       (3)点语法只能调用set(设置器)方法,get(访问器)方法;

       (4)点语法在等号的左边,代表的是赋值,相对应调用的是set方法;

       (5)点语法在等号的右边,代表的是取值,相对应调用的是get方法.

 

示例:[student setName:@"lisi"];

    [student play];

    student.name = @"wangwu";

    student.height = 175;

    NSString *string =student.name;

    NSInteger age = student.age;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值