Objective-C 面向对象基础

本文深入探讨了面向对象编程的三大优点,包括提高软件项目成功率、减少维护费用及提升可移植性和可靠性。同时,文章详细阐述了面向对象设计的三个主要特征:封装性、多态性和继承性。对比面向过程编程,面向对象编程更侧重于功能封装的对象。此外,文章还详细介绍了类和对象的概念,以及如何通过实例化过程创建对象。进一步地,文章讲解了消息传递、方法声明与实现的区别,以及成员变量的作用域和内存分配原则。最后,文章介绍了如何利用结构体作为属性赋值,并提供了结构体作为属性赋值的两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10.面向对象

①优点:

    1)大幅提高软件项目的成功率;

    2)减少维护费;

    3)提高可移植性和可靠性;

②面向对象设计三个主要特征:

    1)封装性;

    2)多态性;

    3)继承性;

③区别:

面向过程:

    1)强调的是功能行为;

    2)关注的是解决问题需要哪些步骤;

面向对象:

    1)将功能封装进对象,强调具备了功能的对象;

    2)关注的是解决问题需要哪些对象;

    3)面向对象时基于面向过程的


11.类(class)

类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。类产生对象的过程叫做“实例化”,一个类可以实例化对个对象。

①组成:一个类由3个部分构成

    1)类的名称:类名

    2)类的属性:一组包含数据的属性

    3)类的方法:允许堆属性中包含的数据进行操作的方法

②类的声明

.h:类额声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。

注意:.h中的方法只是做一个声明,并不对方法进行实现。

.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。

③类的具体声明:

    @interface 类名:父类名

    {

        //定义类的属性    

      }

        //类的行为

    @end
④类的实现

    @implementation Car

            //方法的具体实现

            -(void)run{

            }

    @end


12.对象(object)

即指现实世界中各种各样的实体,是系统中的基本运行实体。对象就是类类型的变量。类产生对象的过程叫做“实例化”,一个类可以实例化对个对象。

一个类就是具有相同类型的对象的抽象。

①创建对象:

Car *p = [Car new];     

    //理解1:Car指针变量指向新申请的内存空间                                                 

    //理解2:用Car类实例化了一个Car类型的实例对象,对象的名称是p

[Car new];  

    //做了三件事情:

        1)向计算机申请内存空间;

        2)给类中的每一个成员初始化值;

        3)返回新申请的空间的首地址;



13.消息

消息是指对象间相互联系和相互作用的方式。一个消息主要由5部分组成:发送消息的对象、接受消息的对象、消息传递办法、消息内容(参数)、反馈。


14.方法

方法的声明和实现,都必须以“+”或者“-”开头。

"+"表示类方法(静态方法)

"-"表示对象方法(动态方法)

在.h中声明的所有方法作用域都是public类型,不能更改。 

①无参无返回值方法的声明:

    -(返回类型)方法名{

    }

②无参对象方法的调用:

    [Car1 run];   //用Car1对象调用了run方法

③有参方法的声明:

    -(返回值)方法名1:(参数类型) 参数名;    //有一个参数的方法

    -(返回值)方法名1:(参数类型1) 参数名1 and:(参数类型2) 参数名2;  //有2个参数的方法

④有参方法的调用:

    [对象 方法名1:参数1 方法名2:参数2];    

    如:[c1 sum:11 and:22];


15.成员变量(实例变量/属性)

成员变量的常用作用域有3种:

    @public 全局都可以访问;

    @protected 只能在类内部和子类中访问;

    @private 只能在类内部访问;


16.内存分配

①当使用一个类创建多个对象的时候,注意:

    ​不同的对象在内存中分配的时不同的存储地址,所以各成员属性的地址也各不相同;


17.#pragma mark

功能:简单来说就是对代码的分组,方便代码查找和导航用的。

#pragma mark - :分割一条实线


18.函数和对象方法的区别

①对象方法:-(void)run;

    ​1)对象方法实现只能写在@implementation...@end中,对象方法的声明只能写在@interface...@end中间;

    ​2)对象方法都以-号开头,类方法都以+号开头;

    ​3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用;

    ​4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在@interface...@end会无法识别,函数的声明可以再main函数内部也可以咋main函数外部;

    ​5)对象方法归类\对象所有;

②函数:

    ​1)所有的函数都是平行的;

    ​2)函数不存在隶属关系;

    ​3)使用的时候可以直接调用;

    ​4)不可以访问对象中的成员变量;


19.结构体作为属性赋值

typedef struct{

    int year;

    int month;

    int day;

}MyDate;


#pragma mark Student类的声明

@interface Student:NSObject

{

    @public

    NSString *_name;

    MyDate _birthday;

}

@end   

 ​

Student *stu1 = [Student new];

stu1->_name = @"dandan";

//第一种赋值

stu1->_birthday = (MyDate){1994,11,7};

//第二种赋值

MyDate date1 = {1994,11,7};

stu1->_birthday = date1;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值