iOS开发-Day13-OC基础、面向对象

开始学习OC了

1、OC语法简介
C语言是一门面向过程的语言,OC是在C语言的基础上,增加了一层最小的面向对象语法,为什么说是最小的面向对象语法呢?因为OC把一些比较复杂的面向对象语法都去掉了,剩下的都是面向对象的精华,因此OC是一门面向对象的语言,而且会比C++简单很多。因为OC是基于C语言的,所以完全兼容C语言,也就是说我们在开发iOS程序过程中,可以在OC代码中混入C语言代码,甚至是C++代码。

在Java中,为了防止两个类名相同的类冲突,你可以将这2个类放在不同的包里面。OC中并没有”包”的概念,也就是没有命名空间机制,取而代之的是开发人员给类名加上前缀,使用前缀可以有效的防止类名冲突。比如NSString(OC中的字符串类)、NSArray(OC的数组类),它们的前缀都是NS

前面说到,OC代码中是可以混入C语言、C++代码的,而C语言和C++作为一门编程语言,都有自己的关键字。为了防止跟C语言、C++关键字冲突,OC的关键字都以@开头。

这里写图片描述

新建一个工程:
这里写图片描述

//import是include的改进,可以避免重复包含
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    //自动释放池
    @autoreleasepool {
        //NSlog参数格式化字符是NSString的对象
        //NSlog的占位符%@用以输出对象,其他的和C一致
        NSLog(@"Hello, World!");
    }
    return 0;
}

2、面向对象(OOP)

面向对象无外乎就是那几个概念的集合
类、对象、实例、方法、消息
  • 新建一个类
    新建一个工程,系统会自动创建main.m文件的,这时候,我们右键项目,选择New File..
    再选择OS X中的Source,在选择Cocoa Class,点击下一步设置类名,确定即可

  • 类在接口@interface中定义

@interface Car : NSObject
-(void)run;
@end
  • 类在接口中实现
@implementation Car
- (void) run
{
    NSLog(@"car is runing");
}
@end
  • 成员变量
@interface Car : NSObject
{

    //@private 私有成员,只有当前类可以访问;
    //@protected 受保护成员,只有当前类或子类可以访问(如果没有添加任何修饰则默认为@protected);
    //@public 公共成员,所有类均可访问;
    int _wheels; // 轮子个数
    int _speed; //时速
    //注意:只能定义不能赋值,因为这里只是在做声明操作,不能赋值的  
}
//定义方法  
//-:实例方法,+:类方法  
//格式:方法说明 (返回类型) 方法名 : (参数类型)参数名称  
-(void)run;
@end

3、实例

  • OC中实例化一个对象的方式是:
Person *person1 = [[Person alloc] init];

4、方法

  • 同时,OC中的方法调用方式:

    对象方法:[对象变量  方法名 参数]
    类方法:[类名  方法名 参数]
    

5、便利初始化函数和便利构造器

  • 为了减轻赋初值的麻烦可以重写写初始化函数以及构造器
//@interface
@interface Student : NSObject
{
    @public
    NSString *_name;
    int _age;
    NSString *_hobby;
    NSString *_addr;
}
-(void)sayHi;
+(Student *)studentWithName:(NSString *)newName andAddr:(NSString *)newAddr andAge:(int)newAge andHobby:(NSString *)newHobby;//+类方法
@end
//@implementation
#import "Student.h"
@implementation Student
-(Student *)initWithName:(NSString *)newName andAddr:(NSString *)newAddr andAge:(int)newAge andHobby:(NSString *)newHobby//便利初始化函数
{
    self = [super init];
    if (self) {
        _name=newName;
        _addr=newAddr;
        _age=newAge;
        _hobby=newHobby;
    }
    return self;
}
+(Student *)studentWithName:(NSString *)newName andAddr:(NSString *)newAddr andAge:(int)newAge andHobby:(NSString *)newHobby//便利构造器(利用了初始化函数)
{
    Student *stu = [[Student alloc]initWithName:newName andAddr:newAddr andAge:newAge andHobby:newHobby];
    return stu;
}
-(void)sayHi
{
    NSLog(@"my name is %@ live in %@ my age is %d i like %@",_name,_addr,_age,_hobby);
    //%@用以输出字符串对象
}
@end
//main.h
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
Student *stu=[Student studentWithName:@"zhangsan" andAddr:@"nanjin" andAge:19 andHobby:@"football"];
        [stu sayHi];
  }
    return 0;
}
//然后今天一直在练习便利初始化函数和构造器,所以其他的练习我就不放上来了

-

-

-15.7.30
-15.8.11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值