黑马程序员——走进面向对象
来源:互联网 发布:淘宝网副总裁张勤 编辑:程序博客网 时间:2024/05/16 11:52
面向对象编程(Objective-Oriented Programming)的首字母缩写为OOP,这是一种编程技术,最初是为了编写模拟程序开发的。OOP很快就俘获了其他种类软件(比如涉及图形用户界面的软件)开发者的心。很快OOP就成为了业内一个非常重要的流行词。它被誉为具有魔力银色子弹,可以使编程工作变得简单而愉快。
OOP是一种编程架构可构建由多个对象组成的软件。对象就好比存在于计算机中的小零件,它们通过互相传递信息来完成工作。Cocoa就是基于OOP概念,并且Objective-C是一种面向对象的语言。
有关术语
类(class)是一种表示对象类型的结构体。对象通过它的类来获取自身的各种信息,尤其是执行每个操作需要运行的代码。简单的程序可能仅包含少量的类,中等复杂的程序会包含实际各类。一般类名首字母都是大写。
对象(object)是一种包含值和指向其类的隐藏指针的结构体。运行中的程序通常都包含成百上千个对象。指向对象的变量通常不需要首字母大写。
实例(instance)是“对象”的另一种称呼。比方说circle对象也可以称为Circle类的实例。
方法(method)是为响应消息而运行的代码。根据对象的类,消息可以调用不同的方法。
接口(interface)是类为对象提供的特性描述。
实现(implemantation)是使接口能正常工作的代码。
类和对象之间的关系
类(Class) 一个类由3个部分构成 类的名称:
1)类名
2)类的属性:一组包含数据的属性
3)类的方法:允许对属性中包含的数据进行操作的方法
对象(Object)
是系统中的基本运行实体 对象就是类类型(class type)的变量 定义了一个类,就可以创建这个类的多个对象 一个类就是具有相同类型的对象的抽象
关于类的几个名词
.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。
注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方 法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。
.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。
方法
方法的声明和实现,都必须以 + 或者 - 开头的。+ 表示类方法(静态方法),- 表示对象方法(动态方法) 在.h中声明的所有方法作用域都是public类型,不能更改 。
方法的声明:
-(void)insertObject:(id)anObject atIndex:(NSUInteger)index
成员变量(实例变量\属性)
成员变量的常用作用域有3种:
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
类的声明(规定当前类的:类名、属性、方法)
1)声明类使用关键字 @interface
2)声明类,我们通常放到.h的头文件中
@interface 类名:父类名
{
//定义类的属性
}
//类的行为
@end
类的实现
1)实现一个类 使用关键字:@implementation
2)实现一个类通常放到.m的文件中
3)实现类主要是对方法的具体实现
@implementation 类名
//行为的具体实现
@end
下面代码实现了在main函数外声明实现一个类:
//车的类的声明@interface Car : NSObject{ @public //类的属性 int wheel; NSString *color; int speed; } //类的方法@end@implementation Car//行为的具体描述@end
创建一个对象
Car *car=[Car new];
在内存中干三件事:
1.开辟存储空间
2.初始化成员变量(写在类声明大括号中的属性就叫成员变量,也叫实例变量)
3.返回指针地址
理解方式1:
定义了一个Car类型的指针变量;
指针变量指向新申请的空间。
理解方式2:
用Car类实例化一个实例对象,对象的名称是p。
并每一个对象中都有一份属于自己的属性。通过对象->对象成员(注意声明属性为:@public)的方式操作对象中的成员, 对其中一个对象的成员进行了修改。和另一个对象没有关系。
下面代码创建了一个实例对象:
int main(int argc, const char * argv[]) { @autoreleasepool { // 创建Car类型的对象 car1 Car *car1=[Car new]; //创建一个对象,实质是返回一个指针(用指针间接访问实例变量) car1->wheel=3; car1->speed=150; car1->color=@"蓝色"; NSLog(@"轮子数量:%d,速度:%d,颜色:%@",car1->wheel,car1->speed,car1->color); } return 0;}
最后控制台输出结果:
- 黑马程序员——走进面向对象
- 黑马程序员—面向对象
- 黑马程序员—面向对象
- 黑马程序员—面向对象
- 黑马程序员——面向对象1:理解面向对象
- 黑马程序员———-面向对象
- 黑马程序员———面向对象
- 黑马程序员———面向对象
- 黑马程序员———面向对象
- 黑马程序员———面向对象
- 黑马程序员——面向对象
- 黑马程序员——面向对象总结
- 黑马程序员——面向对象
- 黑马程序员——C#面向对象
- 黑马程序员——面向对象
- 黑马程序员——面向对象
- 黑马程序员——java面向对象
- 黑马程序员——C#面向对象
- Redis数据类型之字典
- JavaScript--时间显示小插件
- Android大图片裁剪终极解决方案(下:拍照截图)
- 直接用socket实现HTTP下载
- mysql_fetch_array容易掉入的陷进
- 黑马程序员——走进面向对象
- NGUI(三)背包系统页面
- hdu 5298 Solid Geometry Homework(几何)
- PDM与Excel利用VB脚本进行互导
- ubuntu下搭建rust到intellij开发环境
- XML基本知识
- API注册表函数
- hdu 5299 Circles Game(博弈)
- 翻转子串