根据老师总结,记录下来,一起努力!
1.什么是面向对象
l OOP(Object Oriented Programming)基本概念
l 对象
l 抽象 - 类
2.类和对象的基本概念
l 创建类,得到对象
注意:在xcode中创建类可以如下操作:右键—New File(或者COMMAND+N)—
Cocoa Touch Class—继承自NSObject(Subclass of)—类名(例如Person)
//Person.h
#import <Foundation/Foundation.h>
@interface Person: NSObject
@end
//main.m
在main函数当中写入
//实例化对象
/*[类名 方法名] 或者 [对象名 方法名]*/
Person *p1 = [[Person alloc] init];//alloc - 为对象分配内存空间 init- 进行初始化操作
NSLog(@”p1 - %p”,p1);//运行结果:p1 - 0x10010db20
3.属性和成员变量
l 属性
//属性为了让类外可以访问成员变量//属性就是成员变量的外部接口
@property(nonatomic, strong)NSString *personName;
一个属性对应两个方法:setName,getName;
-(void)setName:(NSString * ) name;
-(NSString *)getName;
//类内调用成员变量而不是属性,属性是给类外使用的
//成员变量最好是加_,苹果官方中的成员变量都是添加_
4.方法(函数)的声明和实现以及如何调用
l //调用方法是使用中括号
l //声明方法
//加号方法和减号方法可以相互调用,当然需要类名和实例化变量,加号方法不能调用成员变量
- (void) report;//-、+方法的类型(-代表对象方法,+代表类方法)
+(void) report1;
l //实现方法
-(void)report
{
NSLog(@”-号:report”);
}
+ (void) report1
{
NSLog(@”+号:report1”);
}
l 调用
//调用方法使用[]
Person *p1 = [[Person alloc] init];
[p1 report];
[Person report1];
5.有参数的方法
-(int)showWithA: (int) a;
- (int) showWithA:(int) a andB:(int) b;//两个参数
6.函数名(方法名)-去掉函数(方法)类型,去掉参数类型,去掉参数名称剩下的就是函数(方法)名
7.初始化方法
//重写初始化方法
-(instancetype)init
{
}
//自定义初始化方法
-(instancetype)initWithPersonName:(NSString *)PersonName and PersonAge:(int)PersonAge
8.封装
l 访问修饰符
//关于成员变量访问修饰符的问题:@public公有(在类内类外都可以使用并且可以被继承,使用指向来调用类中的公有成员变量)
@protected受保护(默认为protected)(在类内可以使用,在类外无法调用,可以被继承)
@private私有(在类内可以使用,在类外无法调用,不可以被继承)
@package框架权限 (在框架内相当于受保护,在框架外相当于私有)
l 方法是没有访问修饰符的,同C语言一样。
9.继承
l 父类中的私有变量我们是无法继承使用的
l 如果父类中的方法中使用了私有变量,而我们子类继承了父类的这个方法,那私有变量的操作以及打印我们是可以看到的,但是我们不可以在子类中直接调用私有变量。
l 如果父类中的方法没有写声明则子类无法继承父类中对应的方法。
10.多态
l 将一个方法从一个父类出来修改为多个形态方法的子类。
l 方法重写:在子类中进行方法的重写,函数名以及参数都是一样的,只是内容作了修改
l 方法重载(OC里面不能进行方法重载)
//调用父类方法
[super print];
//调用当前类方法
[self print];