Objective-C与Java类的一些区别

来源:互联网 发布:哈利波特 魔杖 知乎 编辑:程序博客网 时间:2024/05/19 13:57

Objective-C与Java类的一些区别

OC类和C一样,需要有声明和定义,先上一段OC代码

#import <Foundation/Foundation.h>/* * 声明一个People类,继承NSObject */@interface People : NSObject{    // {}花括号内放成员变量    @public    int age;}// {}花括号外面放成员方法(行为)- (void)write;@end/* * People类的实现 */@implementation People- (void)write{    NSLog(@"开始写博客");}@end/* * 主方法 */int main(){    // 创建一个People对象    People *p = [People new];    // 执行*p指针所指对象的write方法    [p write];    return 0;}

执行效果

P

类的声明

下面是声明一个类

@interface People : NSObject{    // {}花括号内放成员变量    @public    int age;}// {}花括号外面放成员方法(行为)- (void)write;@end
  • @interface - @end

    @interface 用来声明一个类,和java里的class关键字类似
    @end 使用@interface声明一个类,必须以@end结尾,表示类声明结束

  • People

    People是类名

  • NSObject

    NSObject是父类,People类要继承NSObject类,继承使用冒号“:

  • {}

    在类声明的模块
    花括号里面 用来声明 成员变量
    花括号外面 用来声明 成员方法

  • @public

    共有类型,和java类型,不必多说了,只不过在OC里边,要在前面加上“@
    并且,我们设置一个类型以后,后面的成员如果没有再给出类型,则都默认是设置前面的类型。

  • -

    - (void)write;
    成员方法前面加一个“-”(减号),是OC的语法,没有为什么,只要是OC对象的方法,就必须以减号“-”开头

  • ()

    - (void)write;
    OC里的数据类型,必须使用小括号括起来,没有为什么

类的实现(行为)

@implementation People- (void)write{    NSLog(@"开始写博客");}@end
  • @implementation - @end

    使用@implementation - @end的部分,表示这部分是类的实现,必须以@end结束,表示类的实现的结束

  • - (void)write{}

    实现声明的方法,在{}里实现具体的内容

OC类与Java类的区别

Java的类没有声明的一说法,只有C才有声明
他们代码类似这样

Java OC P1 P2

创建对象

在OC中,想要执行什么行为,调用什么方法,必须写在[]内
格式如下:

[行为执行者 行为]

那么,OC创建一个对象的代码大概就是下面的样子:

People *p = [People new];
  • *p

    有C语言基础的都知道,*p是一个指针,指针就是一个地址,他指向的就是我们内存当中创建的People对象,C里面所有对对象的操作,都必须通过指针,有了指针,就等于获取到了内存中的对象。

  • new

    用来创建对象的行为,没有为什么,固定写法,就好比Java里创建对象也一定要使用new关键字一样。

Java与OC创建对象的区别

区别大概是下面的样子:

Java OC People people = new People(); People *p = [People new]; 直接获取到对象 获取到对象的指针

访问成员变量

前面已经说过,OC对象的操作,必须要通过指针
那么,访问成员变量大概要这样写:

// 设置年龄为26p->age = 26;

Java与OC访问成员变量的区别

区别大概是下面的样子:

Java OC people.age = 26; p->age = 26; 直接使用对象,通过“.”获取成员变量 使用指针获取成员变量

方法调用

调用方法,与创建对象是一个道理,创建对象我们是调用对象的new行为来获取新建对象的指针
代码大概是下面的样子:

[p write];
  • p

    p是我们创建对象的指针,因为OC操作对象必须要用指针,所以这里的行为执行者pwrite是我们要执行的行为,也就是方法,这样就实现了使用指针调用方法。

Java与OC方法调用的区别

区别大概是下面的样子:

Java OC people.write(); [p write]; 直接使用对象,通过“.”调用方法 使用指针调用成员方法
1 0