OC简介,OC特性,面向对象简介,创建一个类

    • 0: 首先oc完全兼容c语言,就是可以直接运行c语言的程序
      NS—>NextStep 是乔布斯的Next公司的操作系统的名字,所以这里的很多类型都叫做NS开头的

      1: oc特性:
      数据类型:NSInteger,CGFloat,BOOL,NSObject *, id,SEL,Block  // NSObject * 其实就是指针,也是对象, id 可以标示任意类型的对象,
      逻辑控制语句for-in循环
      oc方法,对象方法(-),类方法(+)
      对象方法:-(id)initWithString:(NSString *)string;
      类方法:+(id)stringWithCString:(const char ()cString 
      encoding:(NSStringEncoding)enc;


      其实oc的方法是由一个活着多个标签组成


    • ++++++++++++++++++++++
    • 可以直接运行c的程序:

    • //
      //  main.m
      //  FirstObjectC
      //
      //  Created by 千 on 16/7/24.
      //  Copyright © 2016年 kodulf. All rights reserved.
      //
      
      #import <Foundation/Foundation.h>
      //c语言的方法
      int add(int a, int b){
          return a+b;
      }
      
      
      int main(int argc, const char * argv[]) {
          @autoreleasepool {
              // insert code here...
              NSLog(@"Hello, World!");
              
              NSLog(@"Hello OC!");//日志打印,并且string 已经对象话了,前面天假了@的符号
              printf("Hello OC\n");
              
              //c语言输出日期
              printf("%s-%s-%s\n","2016","04","26");
              //oc输出日期
              NSLog(@"%s-%s-%s\n","2016","04","26");
              //调用c语言的方法
              int result = add(1,2);
              NSLog(@"1+2=%d",result);
          }
          return 0;
      }

      ++++++++++++++++++++++


      3: 面向对象简介:
      和c语言很像啊,封装继承和多态,oc也是单继承的,和java 完全一样,呵呵呵呵
      多态,一个方法可以有多个不同的实现


      类的结构
      设计一个手机类
      类文件系统由.h和 .m文件共同构成
      类的结构:类名,属性,方法


      4: 创建一个类:
      command+n来创建,然后选择Cocoa Class。输入类名就可以创建了
      我们把类的申明部分分放在.h的文件中,实现放在.m文件中,这个和c语言的的创建一个源文件的思路一模一样。只不过c是.c文件

    • 声明Person类,其实应该是Phone的,写错了

    • +++++++++
      Phone.h
      //
      //  Person.h
      //  PhoneTest
      //
      //  Created by 千 on 16/7/24.
      //  Copyright © 2016年 kodulf. All rights reserved.
      //
      
      
      #import <Foundation/Foundation.h>
      
      
      @interface Person : NSObject
      {
          //要以下划线开头来声明类的属性
          @public//如果不加上public ,外面是不好访问的,这个和java几乎就是一样的嘛。哈哈,相当于默认的就是private的
          CGFloat _screenSize;
          NSString *_color;
          CGFloat _memory;
      }
      //在h的文件里面声明,在m文件中实现
      -(void)makeCallToSomeone:(NSString *)someone;
      -(void)sendMessage:(NSString *)message toReceiver:(NSString *)toReceiver;
      @end
      

      Phone.m
      //
      //  Person.m
      //  PhoneTest
      //
      //  Created by 千 on 16/7/24.
      //  Copyright © 2016年 kodulf. All rights reserved.
      //
      
      
      #import "Person.h"
      
      
      @implementation Person
      -(void)makeCallToSomeone:(NSString *)someone
      {
          NSLog(@"给%@打电话\n",someone);//注意c语言里面用%s 来表示,这里oc 里面用%@来表示
      }
      
      
      -(void)sendMessage:(NSString *)message toReceiver:(NSString *)toReceiver
      {
          NSLog(@"给%@发信息,信息内容:%@\n",toReceiver,message);
      }
      
      
      
      
      //description的方法是重写的父类的方法,相当于java中的tostring方法
      -(NSString *)description{
          //[NSString stringWithFormat:]其实就相当于java 中的string.valueOf()方法 666
          return [NSString stringWithFormat:@"Color是%@ 内存是%.1f 屏幕大小%.1f寸\n",_color,_memory,_screenSize];
      }
      @end
      


      main.m
      //
      //  main.m
      //  PhoneTest
      //
      //  Created by 千 on 16/7/24.
      //  Copyright © 2016年 kodulf. All rights reserved.
      //
      
      
      #import <Foundation/Foundation.h>
      #import "Person.h"//导入这里使用的和java 一样使用import
      
      
      int main(int argc, const char * argv[]) {
          @autoreleasepool {
              // insert code here...
              NSLog(@"Hello, World!");
              
              Person *phone =[Person new];
              //phone->_color = 1;//默认的这样是不可以修改的,如果想要成员变量在外部夜可以,需要在类里面声明为public
              phone->_color =@"白色";//注意“”前面一定要有@符号
              phone->_memory=126;
              phone->_screenSize=4.4;
              
              NSLog(@"Color是%@ 内存是%.1f 屏幕大小%.1f寸\n",phone->_color,phone->_memory,phone->_screenSize);
          
              NSLog(@"使用description输出,相当于java的tostring方法\n");
              NSLog(@"%@\n",phone);
              //上面的语句相当于虾面的语句
              NSLog(@"%@\n",[phone description]);
              
              [phone makeCallToSomeone:@"小明同学"];
              [phone sendMessage:@"kodulf今年年薪100万美元" toReceiver:@"kodulf"];
          }
          return 0;
      }
      



      ++++++++
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值