zoukankan      html  css  js  c++  java
  • Object-C面向对象之实现类

    Object-C面向对象之实现类

    一般涉及到面向对象都会C#,Java都不可避免的涉及到类,C#中类的后缀名是.cs,Java中是.java,Object-C中一般用两个文件描述一个类,后缀名为.h为类的声明文件,用于声明成员变量和方法,.m文件主要用于实现声明中的方法,Java和C#声明类用的是Class关键字,OC声明类用的字@interface和@end,实现类用的是@implementation和@end,跟其他的有点不同,方法定义,方法调用都不太一样,具体一点点的看吧:

    新建Cocoa Class:

    语言选择OC,类名Book:

    Book.h中的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #import <Foundation/Foundation.h>
     
    @interface Book : NSObject
    {
        NSString *_author;
        NSString *_publishDate;
    }
    @property int Number;
    - (void)getDetial;
     
    @end

     Book.m中的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #import "Book.h"
     
    @implementation Book
    @synthesize Number;
    -(void)getDetial
    {
        NSLog(@"论程序员的职业素养");
    }
    @end

     main函数中的调用:

    1
    2
    3
    4
    Book *book=[Book new];
    [book getDetial];
    book.Number=100;
    NSLog(@"图书的数量为:%d",book.Number);

    这里的代码暂时先不分析,看下另外一段代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    typedef enum {
        man,
        woman
    } Sex;
     
    @interface Person : NSObject
    {
        @public
        NSString *Name;
        NSString *School;
        Sex sex;
        int Age;
    }
    - (void)say;
    - (int)sum:(int)numA secondNumber:(int)numB;
     
    @end
     
    @implementation Person
    - (void)say
    {
        NSLog(@"多说多错,少说少错");
    }
    -(int)sum:(int)numA secondNumber:(int)numB
    {
        return numA+numB;
    }
    @end

      main函数中的调用,具体代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Person *person=[Person new];
        person->Age=25;
        person->sex=man;
         
     
        NSLog(@"年龄:%d,性别为:%@",person->Age,@"测试");
        [person say];
        int b=[person sum:10 secondNumber:10];
        NSLog(@"两个数字相加的和是:%d",b);

     类中的成员变量都是在{}中的,如果初始化类的时候想要调用的话直接使用->符号进行访问,前提是变量的作用域可以访问,一般来说作用范围是@public,@protected,@private,如果接触过其他语言,public都可以访问,protected是父类和子类都可以访问,private是类本身中才可以访问。

    C#通过操作属性来保护字段,OC中也可以,所以第一段代码就出现了@property和@synthesize;

    方法定义+表示类方法也就是静态方法,-是对象方法:

    1
    -(int)sum:(int)numA secondNumber:(int)numB

     int 是返回值类型,方法后面跟一个函数就是:(类型)名称,如果是多个就空格之后重复,跟上面一样,很好理解;new其他语言中用的很多,不过一般新建一个对象的形式是:

    1
    Person *person=[[Person alloc] init];

    行笔匆匆,难免遗漏,如有不当,多多指教,先行谢过~  

    作者:FlyElephant
    出处:http://www.cnblogs.com/xiaofeixiang
  • 相关阅读:
    路由 懒加载 错误ChunkLoadError: Loading chunk 10 failed.
    ngzorro create创建对话框 对话框组件内 关闭父组件 create对话框
    一个解决方案对dll的引用要注意的问题
    工作流的麻烦
    winform程序中使用documentview模式的考虑
    仿淘宝网评价的五角星投票代码
    图片闪烁代码
    JS+CSS仿淘宝滑过小图预览大图代码
    JavaScript控制图片左右播放的幻灯片代码
    JavaScript实现图片旋转构成3D圆环代码
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4217524.html
Copyright © 2011-2022 走看看