Objective-C 类和对象
2024-09-02 17:19:25
面向对象
面向对象(Object-Oriented)是基于面向过程(procedure-oriented)而言的
面向对象 强调对象<指挥者> OC, Java语言就是面向对象
面向过程 强调过程<执行者> C语言就是面向过程
面向对象是一种编程思想 运用对象 类 封装 继承 多态和消息等概念来构造 测试 重构软件
面向对象的特点 A:封装 B:继承 C:多态
面向对象思想的特点 A:它是一种更符合人们思想习惯的思想 B:它使复杂的内容简单化 C:它使我们从执行者变成指挥者
面向对象的优点 符合人们通常的思维方式 从分析到设计再到编码采用一致的模型表示 具有高度连续性 软件重用性好
类和对象
类 对现实世界中事物的描述(成员变量和方法)
对象 现实世界中实际存在具体的个体
示例代码一
#import <Foundation/Foundation.h> /** 类的声明 **/
@interface Car : NSObject {//大括号内声明成员变量 默认初始化为0(与函数的大括号是不一样的); NSObject: 根类 让Car具备创建对象的能力
@public//此关键字可以让成员变量被外界访问
int _age;//成员变量1
int _height;//成员变量2
}
- (void) run;//对象方法
@end /** 类的实现 **/
@implementation Car
- (void) run {
NSLog(@"小车%i岁,%icm,它在跑",_age,_height);
}
@end /** 主函数 **/
int main() {
Car *c = [Car new];//创建对象
c->_age = ;//设置对象的属性
c->_height = ;//设置对象的属性 [c run];//调用对象方法
return ;
} /** 内存分析 **/
//[Car new] 每次都会创建出新的对象 并且返回对象的地址值 那么就应该用一个指针变量保存对象的地址
示例代码二
#import <Foundation/Foundation.h @interface Person : NSObject {
@public
int _age;
int _height;
}
- (int) test : (int) i;//带参数方法的声明
//- (int) test : (int) i test1 : (int) i1;//多参数方法的声明
@end @implementation Person
- (int) test : (int) i {//带参数方法的实现
return i * i;
}
//- (int) test : (int) i test1 : (int) i1 {//多参数方法的实现
// return i * i1;
//}
@end int main() {
Person *p = [Person new];
int tmp = [p test : ];//带参数方法的调用
//int i = [p test : 10 test1 : 9];//多参数方法的调用 NSLog(@"test方法的值是:%i", tmp);
return ;
} /** 注意 **/
//没有@interface 只有@implementation 也可以开发一个类
//同一个类中不允许两个对象方法同名 (:也是方法名的一部分) /** 方法语法详解 **/
//- (int) test : (int) i;
//方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名; //[p test : 7]
//[指针变量名 方法名 : 实际参数] //- (int) test : (int) i test1 : (int) i1;
//方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名 方法名 : (参数类型) 参数名; //[p test : 10 test1 : 9]
//[指针变量名 方法名 : 实际参数 方法名 : 实际参数]
最新文章
- 【开源】C#跨平台物联网通讯框架ServerSuperIO(SSIO)
- css之盒模型
- JQuery常用方法(均实践过)
- 【原】javascript执行环境及作用域
- symfony中twig的流程控制if,for用法
- What are the 10 algorithms one must know in order to solve most algorithm challenges/puzzles?
- android中handler用法总结
- SystemFile
- qml+opencv(二),实现人脸检测
- 点击轮播图片左右button,实现轮播效果
- 如何从本地把项目上传到github&;&;如何把github项目通过clone复制下来
- DDD理论学习系列(3)-- 限界上下文
- 《Spark大数据处理:技术、应用与性能优化》【PDF】 下载
- 【转】解决Android 6.0 NoSuchContextException 和WEBVIEW_undefined 的问题
- maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
- ubuntu 出错 /etc/sudoers is world writable
- “数据上帝” Jeff Hammerbacher
- Pandas合并数据集之merge、join方法
- javascript获取style兼容性问题
- 移动端开发在iOS系统中 new Date() 返回 NaN 的问题
热门文章
- scp出现ssh port 22: Connection refused 问题解决具体步骤
- 调用save()方法,页面显示保存成功,但是数据库中没有值的原因
- 什么是Apache Isis
- Hello, GitHub!
- hdu 1021 Fibonacci Again(变形的斐波那契)
- stm32函数库分析
- Office365学习笔记—列表查询,删除条目,更新条目。
- 一台ECS服务器,部署多(两)应用,且应用配置不同域名
- 『Python题库 - 简答题』 Python中的基本概念 (121道)
- 清华大学《C++语言程序设计基础》线上课程笔记04---指针