`
zsjg13
  • 浏览: 145060 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

1.3 创建一个类

    博客分类:
  • ios
 
阅读更多

1、问题

面向对象的程序员喜欢能够将功能封装进对象中。此时,就需要定义一个类来封装属性和行为。

 

2、解决方案

Objective-C中的类需要有接口和实现定义。尽管不是绝对必要,但通常要将接口和实现分开放到不同的文件中。这2个文件的名字是一样的,但接口文件的扩展名是.h。

类文件的扩展名是.m。

 

要使用一个类,你必须将该类头文件导入到代码中。

 

3、原理

假如要定义一个Car类。

 

在Car.h中,放的是Car类的接口。类接口必须以@interface开头,以@end结尾。在这2者之间定义的就是类的属性和方法。

#import <Foundation/Foundation.h>

@interface Car : NSObject // 意思是说你的car是NSObject的一个子类,NSObject是Objective-C的根对象。

@end

 

说明:NSObject类具有管理iOS提供的运行时的能力。继承自它的对象可以利用Objective-C出色的内存管理模型。

 

在Car.m中,要先导入Car.h,然后用@implementation声明正在实现一个自定义类。

#import "Car.h"

@implementation Car

@end

 

要使用你的类,就需要导入Car.h,然后从该类实例化一个对象。要实例化一个对象,就要发送2条消息:alloc和init。它们都来自超类NSObject。

【当实现一个新对象时,不要覆盖alloc方法,这个方法是由NSObject声明的。与之相反的是,请覆盖init方法,创建自定义的初始化方法,因为NSObject提供的init方法只是起占位作用】

 

Car *car = [[Car alloc] init];

 

4、代码

//==============Car.h

#import <Foundation/Foundation.h> 

 

@interface Car : NSObject 

 

@end

 

//===============Car.m

#import "Car.h" 

 

@implementation Car 

 

@end

 

//==================main.m

#import "Car.h" 

 

int main (int argc, const char * argv[]){ 

        @autoreleasepool { 

                Car *car = [[Car alloc] init]; 

                NSLog(@"car is %@", car);

        } 

        return 0; 

}

 

5、运行代码

clang -fobjc -framework Foundation Car.m main.m -o maccommandlineapp

 

 

 

分享到:
评论

相关推荐

    java作业1.3类的应用

    在"java作业1.3类的应用"中,你可能会学习如何定义一个类,包括声明属性和方法,以及如何使用访问修饰符控制它们的可见性。比如,`private`、`public`、`protected`和默认的包访问权限。理解这些修饰符对类的封装至...

    hamcrest1.3完整版

    哈姆crest是一个Java匹配框架,用于创建和组合对象匹配器,以进行断言和测试。它为Java单元测试提供了强大的表达式语言,使得测试代码更加清晰、简洁且富有表达力。哈姆crest库在测试领域中广泛使用,特别是在JUnit...

    struts1.3 api文档

    开发者需要创建自定义的 Action 类来处理用户请求,并返回一个 ActionForward 对象指示下一步的动作。 2. **配置文件**:Struts 配置文件(通常为 `struts-config.xml`)是应用程序的核心配置,用于定义动作映射、...

    axis1.3官网web应用

    在Web服务的世界里,Axis是一个非常重要的工具,因为它允许开发者将Java类暴露为Web服务,或者创建可以调用其他Web服务的客户端。 标题“axis1.3官网web应用”表明这是一个与Axis1.3版本相关的Web应用程序,可能是...

    struts是1.3API

    Struts 1.3 API 是一个用于构建基于Java的企业级Web应用程序的重要框架。这个API文档是开发者学习和理解Struts框架核心功能的关键资源,虽然它提供了英文版本,但其丰富的信息对于深入理解Struts的工作原理至关重要...

    java1.3实验类的

    Java 1.3 是 Java 语言的一个重要版本,它在1999年发布,带来了许多新特性并改进了性能。在这个实验类的讨论中,我们将深入探讨Java 1.3的关键特性,以及如何利用这些特性来编写高效、可靠的代码。 1. **垃圾收集...

    jdk 1.3 api 中文版

    《JDK 1.3 API 中文版》是一个由热心网友翻译的文档,旨在为Java开发者提供1.3版本的Java开发工具包(JDK)的中文参考手册。由于官方并未发布1.3版本的中文API,这个非官方的翻译版本尽管不完整,但包含了大部分常用...

    struts1.3 入门级例子

    Struts1.3 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它由Apache软件基金会开发并维护。这个入门级例子旨在帮助新手了解如何在实际项目中应用Struts1.3的核心概念和技术。在这个例子中,我们...

    struts1.3 jar包

    Struts1.3 jar包是Apache软件基金会的Jakarta Struts项目中的一个核心组件,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。这个框架极大地简化了开发人员在构建动态、数据驱动的Web应用程序...

    snews v1.3 简体中文版

    总之,snews v1.3 简体中文版是一个功能齐全、易用性强的新闻管理系统,适合那些需要经常更新内容的中文网站。其强大的文章管理、文件管理和标签系统,以及可能的优化和改进,使得网站管理员能够高效地维护网站,...

    java实验1.3类的应用

    在Car类中,学生需要实现一个名为carRent()的方法,该方法根据天数计算租车费用。对于红旗轿车,费用是900元/天。而在Bus类中,carRent()方法需要考虑座位数,以区分16座以下和16座及以上的车型,费用分别为1000元/...

    django 1.3 docs

    Django 1.3 是一个历史悠久的版本,但它的文档仍然对理解 Django 框架的基本概念和工作原理非常有帮助。在这个版本中,Django 已经展示出其强大的功能和灵活性,使得开发者能够快速构建高效、可扩展的Web应用。 ...

    javafx1.3实例

    在JavaFX中,程序的入口通常是一个启动类,这个实例中的入口是`MainFrame.Fx.Main.fx`文件。这可能是一个包含主类的Java源文件,其中定义了应用程序的主窗口和启动方法。在JavaFX中,通常会有一个名为`start()`的...

    hamcrest-core-1.3的压缩包,hamcrest-core-1.3.jar包 是一款hamcrest的核心包

    hamcrest-core-1.3作为该库的一个稳定版本,包含了丰富的API和改进,确保了与各种测试框架(如JUnit)的兼容性。 二、hamcrest-core与JUnit的结合 JUnit是Java领域广泛使用的单元测试框架,其默认集成了hamcrest-...

    commons-dbutils-1.3.zip

    Apache Commons DBUtils是一个Java库,它简化了与数据库交互的任务,是Java开发中常用的数据访问工具。...在1.3版本中,虽然不包含最新的特性或优化,但对于许多小型项目或学习用途,它仍然是一个可靠的选择。

    百度离线MAP-API v1.3类参考

    通过设置地图类型(如道路图、卫星图)、中心点坐标、缩放级别等属性,可以初始化一个地图视图。例如: ```javascript var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(116.404, 39.915)...

    jdk1.3 api

    JDK 1.3 是 Java 平台的一个重要版本,它包含了用于开发和运行Java应用程序的核心组件。API(Application Programming Interface)是 JDK 的核心部分,为程序员提供了丰富的类库,使得开发者能够构建跨平台的、基于...

    Java1.3API手册

    通过创建并启动 `Thread` 对象,开发者可以在一个程序中同时执行多个任务,提高系统效率。此外,`synchronized` 关键字用于实现线程同步,防止数据竞争和死锁。 6. **网络编程**:`java.net` 包提供了网络编程的...

    JavaSE测试类必备的两个jar包 ——junit-4.12.jar、hamcrest-core-1.3.jar

    例如,我们可以创建一个测试类,其中每个方法使用`@Test`注解,并通过`assertThat()`配合Hamcrest的匹配器进行断言,确保我们的代码在各种情况下都能正确运行。JUnit会自动运行这些测试,并报告任何失败的测试用例,...

    junit-4.12.jar hamcrest-library-1.3.rc2.jar hamcrest-core-1.3.rc2.jar

    例如,开发者可以创建一个名为`MyTest`的类,使用`@Before`和`@After`注解来定义测试前后的准备工作和清理工作,然后在类中定义多个带有`@Test`注解的方法,每个方法对应一个测试用例。 总的来说,`junit-4.12.jar`...

Global site tag (gtag.js) - Google Analytics