黑马程序员——OC的初步认识,类和对象
来源:互联网 发布:淘宝虚拟物品类目选择 编辑:程序博客网 时间:2024/05/30 04:30
—-Java培训、Android培训、iOS培训、.Net培训期待与您交流—-
一、OC简介
oc是在c语言的基础上,增加了面向对象的语法,开发的一种语法。
oc可以完全兼容c语言,可以在oc中混入c语言代码和一部分的c++代码
oc用途:用于Mac os x平台和ios平台的应用程序开发
文件后缀名c->.c oc->.m c++->.m
二、语法
1.关键字都是以@开头:@interface,@implementation,@end,@public,@protected等等
2.字符串以@开头: @”Hello”
3.其它语法
基本数据类型:char,int,float,double,BOOL…
null:相当于c语言中的null
基本语句: 循环语句,条件语句等等
三、OC基本理解
1.OC程序运行过程
m源文件(编译)->.o目标文件(链接)->a.out(可执行文件)
2.示例:
.#import
<1>用途:
跟#include一样,拷贝文件的内容
可以自动防止文件的内容被重复拷贝
<2>主头文件
主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件
Foundation框架的主头文件名称就是Foundation.h
只需要包含Foundation框架主头文件,就可以使用整个框架的东西
<3>运行过程
1> 编写OC源文件:.m、.c2> 编译:cc -c xxx.m xxx.c3> 链接:cc xxx.o xxx.o -framework Foundation
总结:只有用到了Foundation框架才需要加上-framework Foundation)
<4>NSLog与printf的区别
NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数
NSLog输出后会自动换行,printf输出后不会自动换行
使用NSLog需要#import <Foundation/Foundation.h>
使用printf需要#include<stdio.h>
3.BOOL变量
BOOL类型的变量有2种取值:YES(为1)、NO(为0)BOOL的输出(当做整数来用)
4.面向对象和面向过程
OC是面向对象的,C是面向过程的
常用术语:
面向过程:procedure oriented面向对象:object oriented(简称OO) 面向对象编程:object oriented programming
面向对象和面向过程的区别:
示例:以人打开电脑听歌为例子
a.面向过程:1>打开电脑 2>播放电脑中歌曲 3>关闭电脑b.面向过程:1>开机 2>播放歌曲 3>关机
区别分析:面向过程关注的是解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象
5.类和对象的关系
前面已经简单介绍了面向对象的思想,在面向对象的编程思想中,有两个名词我们会经常用到:类和对象
1.我们可以把【类】和【对象】的关系就像是【图纸】和【实物】的关系。在学习OC的过程中,我们要习惯把所有可能的主体具化成对象。
2.OC是利用类来创建对象,对象是类的具体存在。
3.面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象。
<1>类的创建
举个例子:如果“动物图纸”是一个类,那么我们就可以根据这张图纸创建出很多个动物实体,这些动物实体就是“动物图纸”这个类生成的对象。
在创建类时,有两个要素:【属性】和【行为】(一般习惯把”行为”称呼为”方法”)
在图纸中,我们需要描述清楚动物的:年龄,重量、毛色、速度、等等,这些就是动物这个类的属性;
而动物具有跑、跳、叫、打架等行为,这些行为(方法)我们也需要在动物这个类中写明。
<2>类的创建方法
类的创建分为声明和实现两部分,一般类的声明写在.h文件中,类的实现写在.m文件中。
类的属性不需要写实现,所以类的实现其实就是写方法的实现。方法的声明和实现方法有点象函数的声明和实现。
类名的声明写在@interface 和 @end 之间
//文件名:Car.h//这个文件中写类的声明#import <Foundation/Foundation.h>//@interface标志着类的生命开始//这格式固定格式:@interface 类名 :父类名(父类是后面所学,当前我们默认写NSObject)@interface Car : NSObject{ //对象属性默认是被保护的,想要直接访问就必须在属性前加上@public @public //属性声明 int _wheels; //轮胎个数 int _speed; //时速}//大括号后面写类的方法的声明//累的方法有2种:1.对象方法:只有这个类创建出来的对象才能调用,以-号开头 2.类方法:只有这个类可以调用,以+号开头//这是一个对象方法的声明- (void) run; //@end标志着类的声明的结束@end
类的实现
类名的实现写在@implementation 和 @end 之间
Car.m //文件名//这个文件写类的实现,类的实现其实就是方法的实现,因为类的属性不需要写实现//把类的声明拷贝到这个文件中,以便写方法的实现时让程序可以找到属性和方法的声明#import "Car.h"//@implementation标志着类的实现的开始@implementation Car//在@implementation和@end之间写类的实现- (void)run{ NSLog(@"车子跑起来了"); }//@end标志着类的实现的结束@end
2.对象的创建
OC中,我们可以根据一个类创建出无数个对象。其实,类也是一个对象。只要是对象,我们就可以调用对象所具有的方法。
调用对象方法的语法是: [ 对象名 方法名 ];
所有类都默认有一个名叫 new 的方法,我们通过这个方法可以创建出类。
int main(){ //在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称] ->[Car new] [Car new];//执行了Car这个类的new行为来创建新对象 Car *p = [Car new]; //定义了指针变量p,p指向Car类型的对象 //Car new会创建出一个新对象,并且会返回新对象本身(新对象地址) p->wheels = 4; p->speed = 250; //给新对象的wheels属性,speed属性赋值 NSLog(@"车子有%d个轮子,时速为:%dkm/h",p->wheels, p->speed); return 0; }
3.类的命名规范
1>.类名的命名规范
类名的第一个字母必须是大写
不能有下划线
多个英文单词,用驼峰标识
2>.属性的命名规范
必须以下划线开头(行业规范,后面我们就会知道为什么这样命名)
多个英文单词,驼峰标识
3>.方法的命名规范
方法名以加号’+’或减号’-‘开头,对象方法以减号开头,类方法以加号开头。
方法名前写返回值类型,如果需要传入参数,方法名以冒号结束,并在冒号后面描述参数类型和形参名称
数据类型必须用括号括起来 例如:(void)、(int) 、(NSString*)
4.方法和函数的区别
1>.对象方法都是以减号-开头。
2>.对象的方法声明必须写在@interface和@end之间
3>.对象的方法实现必须写在@implementation和@end之间
4>.对象方法只能由对象来调用,不能当做函数来调用
5>.函数能写在文件的任何位置,函数归文件所有
6>.函数调用不依赖于对象
7>.函数内部不能直接通过成员变量名访问某个对象的成员变量
- 黑马程序员——OC的初步认识,类和对象
- 黑马程序员——OC的初步认识,类和对象
- 黑马程序员——OC面向对象的基础认识
- 黑马程序员——[OC]01-OC的初步认识(简单程序)
- 黑马程序员——ios学习笔记 OC 初步认识
- OC语言关于类和对象的初步认识
- 黑马程序员————OC基础——定义OC的类和创建OC的对象
- 黑马程序员——OC——类和对象
- 黑马程序员-OC——类和对象
- 黑马程序员——OC类和对象
- 黑马程序员——OC语言中的类和对象
- 黑马程序员——OC中类和对象
- 黑马程序员——OC-4:类和对象
- 黑马程序员——OC基础:类和对象
- 黑马程序员——OC基础:类和对象
- 黑马程序员——OC语言基础---类和对象
- 黑马程序员——OC基础学习(一)---第一个OC语言程序和面向对象编程的基本认识
- 黑马程序员——OC的简单认识
- openxml的style语法定义,备份
- 使用多线程编程模拟车票销售
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- 一步一步写算法
- /sapmnt/ 空间满,巧用软链接ln解决问题
- 黑马程序员——OC的初步认识,类和对象
- ParaviewWeb学习记录1
- 数据结构:题目(3)测试一个数组序列是否是二叉树的前序遍历或者后序遍历结果
- java获取字符串格式日期向前或向后n天的日期
- JAVA实现SFTP实例
- 百度2015实习生招聘笔试
- Intent进阶 和 Intent-filter 学习笔记
- Matrix转rotation
- android为activity设置自定义风格title