Objective-C与Java类的一些区别

简介: Objective-C与Java类的一些区别 OC类和C一样,需要有声明和定义,先上一段OC代码#import /* * 声明一个People类,继承NSObject *...

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对象的操作,必须要通过指针
那么,访问成员变量大概要这样写:

// 设置年龄为26
p->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];
直接使用对象,通过“.”调用方法 使用指针调用成员方法
相关文章
|
2天前
|
Java 机器人 程序员
深入理解Java中的类与对象:封装、继承与多态
深入理解Java中的类与对象:封装、继承与多态
|
1天前
|
存储 Java
心得经验总结:浅谈Java类中的变量初始化顺序
心得经验总结:浅谈Java类中的变量初始化顺序
|
16小时前
|
存储 Java API
Java基础之String类
Java的String类是引用类型,用于创建和操作字符串。字符串对象在`java.lang`包中,不可变。创建方式包括字面量和`new`关键字。字符串池存储字符串常量,避免重复。比较字符串用`equals()`(区分大小写)和`equalsIgnoreCase()`(不区分大小写)。`length()`返回长度,`concat()`或`+`拼接,`substring()`截取,`indexOf()`和`lastIndexOf()`查找,`replace()`替换,`split()`分割。这些是常用的字符串API。
5 0
|
16小时前
|
Java
Java基础之String类
Java基础之String类
8 0
|
18小时前
|
Java
Java中代码块区别及代码示例
Java中代码块区别及代码示例
|
20小时前
|
存储 安全 Java
Java.security包中的KeyStore类详解
Java.security包中的KeyStore类详解
6 0
|
22小时前
|
Java
技术经验分享:Java_动态加载类(英文)
技术经验分享:Java_动态加载类(英文)
|
1天前
|
存储 Java
一篇文章讲明白JAVA类与对象(六)
一篇文章讲明白JAVA类与对象(六)
|
1天前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
【6月更文挑战第26天】Java IO流涵盖字节流与字符流。字节流(InputStream/OutputStream)处理数据单位为字节,适用于二进制和文本,而字符流(Reader/Writer)专注于文本,处理单位为字符,处理编码转换。字符流在字节流基础上添加编码处理,以装饰器模式实现。文件复制示例展示了两者区别:字节流直接复制所有数据,字符流处理字符编码。理解并选择适当流类型对优化程序至关重要。
|
2天前
|
算法 Java 机器人
Java中的异常处理:Checked与Unchecked的区别
Java中的异常处理:Checked与Unchecked的区别