Objective-C与Java语法对比,帮助快速入门

Objective-C,由于是面向对象,所以很多概念是与Java是相类似的,由于是兼容标准C语言,所以一部分语法是与C相似的


对比项
Java
Objective-C 
备注
引入
import java.util.Map;

#import "MyTest.h"

@class MyTest


基类
java.lang.Object
NSObject

接口

public interface MyTestFace {

}

@ protocol MyTestFace <NSObject>

@end


public class MyTest{

…                                   

}

@interface MyTest: NSObject

@end


@implementation MyTest

@end


Obj-C类是由

两部分组合成

一个类,

interface

负责声明方法、

变量,与传统

的接口概念

相似

类继承

public class My extends MyP{

}

@interface My: MyP

@end

Obj-C的继承是

定义在

interface的

实现接口

public class My implements MyF{

}

@interface MyTest: NSObject<MyF>

@end

方法定义

public String executeTest() {

         return "Hello";

}

- (NSString *) executeTest{

    return @"Hello";

}

静态方法

public static String executeTest() {

         return "Hello";

}

+ (NSString *) executeTest{

    return @"Hello";

}

带1个

参数方法

public String exeTest(String strP) {

         return strP;

}

- (NSString *) exeTest:(NSString *)strP{

    return strP;

}

带n个

参数方法

public int exeTest(int i1,int i2,int i3){

         return i1+i2+i3;

}

- (int) exeTest:(int)i1 i2:(int)i2 i3:(int)i3{

    return i1+i2+i3;

}

Obj-C的参数

冒号前的定义,

可以理解为

参数别名

成员变量
public String title;
@property NSString *title;

静态变量
public static String title="Hello";
static NSString *title =@"Hello";

实例化
MyTest myObj = new MyTest();
MyTest *myObj =[[MyTest alloc] init];

方法调用
myObj. executeTest();
[myObj executeTest];

Obj-C是

[对象 方法]

方法调用

1个参数

myObj. executeTest(1);
[myObj executeTest:1];

方法调用

n个参数

myObj. executeTest(1,2,3);
[myObj executeTest:1 i2:2 i3:3];

成员赋值
myObj. title="Hello";
myObj. title=@"Hello";

空值
null
nil

通用类
java.lang.Object
id或instancetype

工作台

输出

System.out.println("Hello);
NSLog(@"Hello");


Objective-C其它常见语法(有部分是C的)



描述
block变量

符号是^,可以理解为函数变量,在函数中定义函数

- (void) exeTest {
    void (^myFun)(NSString *strP);
    myFun = ^(NSString *strP){
        NSLog(@"Hello:%@", strP);
    };
    myFun(@"GG");
    …
}

分类继承

在原来的类的基础上增加方法,调用的时候用原来的类直接调用

@interface NSString (MyTest)
...
@end

预处理命令
#define         定义一个预处理宏
#undef         取消宏的定义
#include        包含文件命令
#include_next   与#include相似, 但它有着特殊的用途
#if             编译预处理中的条件命令, 相当于C语法中的if语句
#ifdef           判断某个宏是否被定义, 若已定义, 执行随后的语句
#ifndef         与#ifdef相反, 判断某个宏是否未被定义
#elif  若#if, #ifdef, #ifndef或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if
#else  与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句, 相当于C语法中的else
#endif      #if, #ifdef, #ifndef这些条件命令的结束标志.
#defined    与#if, #elif配合使用, 判断某个宏是否被定义
#line    标志该语句所在的行号
#         将宏参数替代为以参数值为内容的字符窜常量
##       将两个相邻的标记(token)连接为一个单独的标记
#pragma      说明编译器信息
#warning       显示编译警告信息
#error        显示编译错误信息

类型创建

在现有的类型基础上创建一个新的名字

typedef int myint;




你可能感兴趣的:(java语法,Objective-C语法)