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];
直接使用对象,通过“.”调用方法 使用指针调用成员方法
相关文章
|
18天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
9天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
14天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
54 4
|
14天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
32 2
|
19天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
17天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
23天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
23天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
22天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
23 3
|
25天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
22 5