Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性。
1、面向对象和面向过程
面向对象和面向过程是编程的两种思考方式。面向对象,简称OOP,它是以事物为中心,参与事件的事物是核心,完成事件只是事物的一个小任务。面向过程,简称OPP,它是以事件为中心,事件是核心,列出了完成事件的每一个步骤,一步一步完成。也就是面向对象侧重于从问题在寻找客体、客体的作用。客体间的关系即“谁”、“做什么”、“怎么做”,面向过程侧重于问题的分解即“事件怎么做”。
2、类和对象
(1)类是一组具有相同(特征)属性和行为(功能)的事物的集合(抽象)。对象就是类的具体实现。世间万物皆对象。类其实就是一种数据类型,它的变量就是对象。
(2)类的定义
在OC中,类的定义分两部分:接口部分和实现部分;
接口部分(interface):声明了类与父类的名字、方法是实例变量。接口文件以.h为后缀。
例如 Student.h 接口文件
@interface Student : NSObject //NSObject是继承的父类
{
@public //访问修饰符
//以下是实例变量的声明
NSString * name; //姓名
int age; //年龄
NSString * address;//地址
NSString * hobby; //爱好
}
//是方法的声明
-(void) sayHi; //打招呼的方法
-(void) eat; //吃饭的方法
-(void) walk; //走的的方法
实现部分(implementation):包含了方法的实现,真正意义上定义了类的行为。实现文件以.m为后缀。
注意:
编译器不要求将接口文件和实现文件的代码放在不同的文件中。每一个类用一对接口/实现源文件是一个良好的习惯。一个文件中可以声明和定义多个类。
如果类之间没有什么关系,最好不要把不同的类放在同一个文件书写。
例如 //Student.m 实现文件
#import
@implementation Student
//以下是方法的实现
-(void) sayHi //打招呼的方法
{
NSLog(@"我是来自%@的%@,今年%d岁,喜欢%@",address,age,name,hobby);
}
-(void) eat //吃饭的方法
{
NSLog(@“%@也得吃饭。”,name);
}
(3)对象的创建和使用
1>对象的创建
内存分配:为对象动态的分配内存地址。
初始化:在内存中填上的初始值。
例如:Student * stu =[[Student alloc] init];
说明:向类发送alloc消息,就是为该类分配一块足够大内存,用于存放实例变量,同时初始化内存,填上的初始值。
2>对象的赋值使用
例如://main函数
#import "Student.h"
int main (int argc, const char * argv[])
{
@autoreleasepool {
//创建一个学生对象
Student * student = [[Student alloc] init];
student->name = @"孙悟空";//为姓名赋值
student->age = 500; //为年龄赋值
student->address = @"傲来国花果山";//为地址赋值
student->hobby =@"游山玩水";//为爱好赋值
//调用打招呼的方法
[student sayHi];
}
->赋值必须实例变量的修饰符是@public。实例变量的修饰符还有@protected和@private,系统默认实例变量的类型是@protected,对于这两种类型的实例变量,我们需要调用方法为其赋值或者取值。
广义上讲为实例变量赋值的方法成为设置器,取出实例变量的方法成为访问器。
设置器、访问器说明:
1. 设置器命名: set+首字母大写的实例变量名 如:-(void)setAge:(int)newAge
2. 设置器参数不要与实例变量重名。
3. 读取器:与实例变量名同名,并且返回类型与实例类型一致。
缺点:
实例变量越多,编写就越麻烦。
OC学习总结之面向对象和类
精选 转载下一篇:UILabel自适应大小
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
JavaScript学习之面向对象
面向对象JavaScript的继承机制代码示例:<script> //prototype
代码示例 面向对象 javascript -
Kotlin读书总结之面向对象
本文是阅读《kotlin编程实战》的读书总结,主要内容是第二部分面向对象的Kotli
kotlin 读书笔记 Kotlin编程实战 ide 构造函数 -
python学习之面向对象学习
python学习之对象学习
学习 python 对象学习 -
【C#之面向对象总结】
前言:面向对象,是否曾经你也和她相识过,我第一次听到她,是在学习VB 的时候,在这时,也接触了面向过程。
面向对象 继承 封装 多态 原则 -
Python学习之面向对象(类的特殊方法)
1. 与类有关的几个函数hasattr() #判断对象object是否包含名为name的
属性值 类变量 代码示例 子类 初始化 -
C++学习之面向对象和封装
通过类的属性和行为的结合,可以表示现实世界中的对象,将相关的数据和行为组织在一起,实现封装和抽象。总体来说,封装是面
c++ 学习 java 成员函数 成员变量 -
面向对象(Python):学习笔记之面向对象基础
学习笔记之面向对象基础
面向对象 创建对象 封装 -
Java学习笔记之面向对象
Java面向对象
成员变量 构造方法 创建对象 -
C++学习之面向对象
属性(成员变量)表示对象的状态或数据,而方法(成员函数)表示对象的行为或操作。通过创建类的对象,可以在内存中分配
c++ 学习 开发语言 程序人生 成员函数 -
python学习之面向对象学习进阶
python, 对象,类
学习 python 对象学习