1. NSLog 是什么
是OC独有的函数
2.有什么用
用于打印输出,跟C语言printf函数作用相似
3. NSLog和printf函数的差异是什么
a.NSLog 可以自动换行,而printf不可以
b.NSLog自动输出时间等项目信息, printf 不会输出
c. NSLog 函数的参数是一个NSString对象
d. printf 是一个字符串常量指针.
4.BOOL 是什么
是OC独有的基本数据类型
5. 有什么用: 用于表示真假结果,只有两个值,YES,NO
6. 何时用
当需要表示真假值的时候
-
#import <Foundation/Foundation.h>
-
int main(){
-
-
BOOL b=YES;
-
BOOL n=NO;
-
NSLog(@"%d--%d",b,n);
-
return 0;
-
}
-
-
// 用别名的方式定义了一个有符号的char类型叫BOOL
-
typedef signed char BOOL
-
#define YES (BOOL) 1 // 用宏定义的方式定义了1并强转为BOOL型,YES
-
#define NO (BOOL) 0 // 用宏定义的方式定义了0并强转为BOOL型,NO
7. 面向对象是什么
是一种解决问题或处理事情的思想
8.类与对象概述是什么?
答:OC 中描述事物通过类的形式体现,类是具体事物的抽象,是一个抽象概念.而对象即是该类事物实实在在存在的个体.
9.怎么用?
答:定义类, 根据类创建对象,使用对象
10.特点?
答:任何一个类都是由属性和行为构成.
11. 如何取定义一个类:
a.类的声明->功能:做成员(实例)变量(即属性)和方法(即行为)的声明
@interface Phone :NSObject {
@pubilc
float screen ; // 成员变量的声明
int cell ;
}b.类的实现->功能:做方法的实现
@implementation Phone
-(void)call { // 方法的实现
NSLog(@"打电话了");
}
-
#import <Foundation/Foundation.h>
-
@interface Phone :NSObject {
// 大括号里面写属性
@pubilc // 表示这个属性能被外部访问
float screen;
int cell ;
}
-(void) call ; // 声明一个打电话的方法
@end
@implementation Phone
-(void) call {
NSLog(@"打电话了.....")
}
@end
12.创建一个类的对象并使用
1.创建
类名*对象=类型 [new]; 固定写发
如:Phone *p=[Phone new]; p表示这个对象
注:类的对象用这个类的指针来表示
13.使用
1.使用属性 对象名->属性名; p->screen;
2.给属性赋值 对象名->属性名=具体的值; p->screen=4.0;
14.使用方法
[对象名 方法名:参数] 如:[p call]
注:参数没有可省略
15.类与对象使用的关键点
a.类必须有声明和实现,二者缺一不可.
b.类必须继承NSObject,让其具有创建对象的能力.
c.成员变量要能被直接访问必须声明为@pubilc
d.属性初始值为0,且不能在声明时赋值.
e.方法在类的声明区域声明,就要在类的实现区域实现.
f.方法中所有数据类型必须加括号.
g.可以在方法中直接使用成员变量.
16.OC的有参方法
两个要点:1,参数的类型用()括起来 2.参数用:(冒号)分割,一个参数对应一个(冒号)
如:定义一个两个数相加的方法
-(int)add:(int)a :(int) b{
return a+b; // 简化版,不建议.
}
标准版:OC的规范:参数前面要有说明
-(int)addOfNum1:(int) a Num2(int) b{
return a+b;
}
注意:方法中除了参数名和数据类型的部分统称为方法名.
17. 类的设计与匿名对象
一个类中的属性可以是任何类型.
类设计的两个原则,高内聚,低藕合
高内聚:就是把有关联的属性要封装起来,成为一个单一的模块.
低藕合:就是一个类中各模块应该尽量独立.
18.面向对象的三大特性
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式.
好处:将变化隔离,便于使用,提高重要性,提高安全性.
封装操作:通过给外部暴露的两个方法,set方法用设置值,get方法用于获取值.
规范:
1.不能有返回值
2.必须有参数,且参数类型与属性类型一致
3.参数名不能与属性名一致
4.set+属性名:从第二个单词首字母大写(驼峰命名)
作用:就是给属性(成员变量)去赋值
规范:
1.必须有返回值.
2.不能有参数.
3.返回值类型必须跟属性类型一致.
4.get+属性名:从第二个单词首字母大写(驼峰命名)
作用:就是把属性值传递给调用者.
类方法:用加号+开头 调用:[类名 方法名:参数];
对象方法 :用减号-开头
19. 继承
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需在定义这些属性和行为,只要继承单独的那个类即可.
注意:a.一个父类的子类可以有多个,但一个父类只有一个.
b.子类里不能定义与父类相同的属性
c.但子类与父类中可以定义相同的方法, 重写
d.当父类与父类有同方法时,用之类的.
e.父类必须在子类定义前声明
f.一个类只能单继承(一级继承)但是能多层继承.
作用及好处:
a.子类可以直接访问父类中的属性和行为
b.继承的出现提高了代码的复用性.
c.继承的出现让类之间产生了关系,提供了多态
20. 组合:一个类里,包含另一个类的对象.
当两个类需要建立关联的时候,可以用组合.
表示:A类包含B类.
21.多态:是指一种事物的多种形态
有什么用:具有极强的扩展性,父类的一个指针可以表示不同的子类为对象.
21.多态有什么局限?
父类的指针指向子类时,如果要调用子类的独有方法,必须强转.
普通写法: Cat *cat=[Cat new];
[Cat eat];
Dog *dog=[Dog new]
[Dog eat];
多态写法:Animal *a =[Dog new];