美文网首页
面向对象基本语法

面向对象基本语法

作者: 小李不木 | 来源:发表于2019-06-10 12:53 被阅读0次

OC完全兼容C(.m)语言,可以在oc语言中混入c(.c)语言代码甚至是c++(.mm)代码。

oc关键字:基本上所有关键字都是以@开头。

在c语言中用 “hello"  表示字符串,在oc 中用   @“hello" 表示字符串。

oc中的基本数据类型:  char , int , float, double , BooL(Yes \ No);

BOOL 类型的本质:

typedef   signed   char  BOOL ;

 定义一个新类型代替 char 类型,由于char 类型可以做整型使用,所以BOOL 也可以做为整型输出。

  BOOL类型变量有两种取值,Yes,NO.

  在系统内部:# define   YES (BOOL) 1;

              # define   NO (BOOL) 0;           

nil 相当于 c语言中 NULL 或者0;

  基本语句有: 循环语句( while  , do  while , for);

注释和 c 语言一样: //  和 /* ...*/

 屏幕 输出和c语言不同的是用到了   NSLog(@"hello"); 并且 NSLog 中不用使用换行符 \n, 它会自动换行,并且输出时间日志等。

NSLog 在 foundation 框架中,所以当文件程序使用NSLOg 输出时 需要包含 foundation 框架的主头文件,就可以使用整个框架的东西,主头文件时最重要的文件,名字一般和框架名一样,一般都是框架名.h ,包含了框架中的所有其他文件。

 OC 中使用  # import 来代替  # include  ;

# import 的作用:

                跟# include 一样,拷贝文件的内容;

                自动防止文件的内容被重复拷贝、

C语言是面向过程的,关注的事解决问题需要哪些步骤,OC是面向对象的语言,关注的事需要哪些对象。

专业术语:

           面向过程: Procedure    oriented 

           面向对象:Object  oriented 

面向对象编程:Object  oriented   programming  

  面向对象中有两个重要的概念:类和对象。类是抽象的,对象是具体的。

OC中面向对象1:oc 中的类相当于图纸,用来描述一类事物:,也就是说要想创建对象必须先有类。

                           2:oc利用类来创建对象,对象是类的具体存在。

                           3:因此,面向对象解决问题应该是先考虑需要设计哪些类,在利用对象创建多少对象。

   类是无数个对象相同属性的概括,描述。

 类的设计:1: 事物名称   (类名)

                     2:属性

                     3:行为(功能)

   一般的名词都是类,拥有相同或者类似属性和行为的对象都可以抽象出一个类。

 类命名规范:第一个字母必须大写,并且不能用下划线。  多个英文单词时,第一个英文单词要大写,使用驼峰标示。 

哪个对象最清楚这个行为,就把这个行为写到哪个对象中去。

 完整的写一个类;类的声明和实现。

类的声明用来声明对象的属性,行为。

例如:

  @interface   Person :NSObject 

//   类继承自NSObject 可以让类具有创建对象的能力

{   @public 

//  可以让后面的指针变量修改成员变量的值

   int  age ;

 //  年龄属性

  double  height;

//   身高属性

}

- void run ;

@end 

声明了一个类,大括号里写类的属性。属性中的成员变量默认的初始化都是0.  方法的声明不能在大括号里。

@implementatio   Person 

- void  run 

{

    NSLog (@"跑起来了");

//  方法的实现

}

@end 

  类的实现中写方法的实现

# imort  <Founntation/Fountation.h>

 int  main ()

 {

Person * a = [Person   new ];

//  这句代码执行后就会创建一个新的person 对象。

//  每次执行这样的代码都会生成新的对象

//  用一个person 类型的指针指向 这个新对象

 a->age = 12;

 //  对新对象中的age 成员变量进行赋值操作。

[ a   run ];

//   给 a 指向的对象发送一条run 消息,就是说a 指向的对象要执行run这个函数。

     }

在类中操作对象修改对象,只能通过指针进行

方法的命名规范:

   只要是oc的方法必须以减号 - 开头。

   对象方法中的数据类型必须要用小括号括起来,小括号只能扩住数据类型。

   不接收任何形式参数: - void run ;

  方法的声明在类的声明里,方法的实现在类的实现中。方法依赖于类的存在而存在。

带形参的方法:

例如:

- ()方法名:()形参名;

//  此时有一个形参

oc 方法中一个形参对应一个冒号

冒号也是方法名的一部分

不能两个对象方法同名

类的内存剖析:

    我们了可以利用一个类创建出无数个对象,每个对象都是自己的属性。并且共用一份方法。

在使用类创建对象之前,系统会先把类加载进内存,且只加载一次,然后在创建新的对象,但是每次创建新对象都会给新对象分配一个新的内存地址。

在内存中类中只存放了方法列表,,、每个对象内部都有一个isa 指针,这个指针指向它所对应的类,当对象调用某个方法时就会顺着isa 指针在类中寻找对应的方法,找不到的话,就去父类中找。当方法内部要返回成员变量时,就会访问当前对象中的成员变量。 

oc中的对象一旦创建,即使是在代码块中也不会随着代码块的结束而结束,代码块的内存空间依然存在,除非文件结束或者手动清除。

类的一些常见错误:

1:只有类的声明没有类的实现。

2:漏掉了@end

3: @interface 和  @implementation 嵌套

4:两个类的声明嵌套

5:成员变量没有写在大括号内

6:方法写在了大括号内

语法细节: 成员变量不能在大括号内部进行初始化,不能直接被赋值。

                     方法不能当做函数一样调用。

                     不能随便将成员变量当做c语言中的变量一样用一些关键词进行修饰。

                     类的实现可在main 函数之后。只要在类的声明之后就行、

oc 方法与函数的区别;

1:方法只能用在类中,只能声明在@interface 实现在@ implementation 中。

2:方法不能独立与类存在,而函数与类没有任何关系。函数归整个文件所有。

3:方法只能由对象调用。函数没有任何要求限制,可以写在任何地方,只要不在@interface 和@ end 之间就行。

4:函数内部不能直接访问成员变量,因为函数与对象没有任何关系。

类也可以只有实现没有声明

例如:   

@ implementation  Dog : NSObject 

{

int  age ;

  double  height;

}

  -( void )  run

NSLog (@"跑起来了");

}

@end  

这样也可以使用一个类,但是不能在类的实现中定义和类的声明中相同的成员变量。

匿名对象: car *c ;

                    c =  [Car  new ];

                    c-> speed = 130;

其实这三行相当于:

                  [Car new ]-> speed = 130;

 因为这个新对象没有任何指针指向它,所以没有名,成为匿名对象

误区: [Car new ]-> speed = 130; 

     [[Car   new ]   run ];

 //     这句语句有问题,因为这是相当有新建了一个对象然后调用新建对象的 run方法,可是这个容易引起歧义,在内存中是错误的。

相关文章

  • Lession04类和对象的应用

    面向过程---------->面向对象 类的基本语法 构造方法 命名空间

  • 面向对象基本语法

    OC完全兼容C(.m)语言,可以在oc语言中混入c(.c)语言代码甚至是c++(.mm)代码。 oc关键字:基本上...

  • 面向对象基本语法

    目标 ●dir内置函数●定义简单的类(只包含方法)●方法中的self函数●初始化方法●内置方法和属性 01.内置函...

  • 面向对象 -- 基本语法

    创建类 创建对象 定义一个猫类 Cat定义两个方法 eat 和 drink定义一个猫类的对象 tom Cat()在...

  • iOS开发初学者学习路线

    基础C语言基本语法、Objective-C基本语法面向对象特性(类、对象、继承、多态、动态类型、动态绑定)协议(P...

  • Lua-基本语法

    1.基本语法 2.表 3.数组 4.面向对象之复制表的方式面向对象 5.面向对象之函数闭包的方式面向对象

  • JAVA基础概念

    整体目录 面向对象概念 JAVA基本语法 JAVA类 继承与接口 Numbers And Strings Gene...

  • 面向对象编程(二)

    面向对象编程(二) -------面向对象的基本特性 1、面向对象的基本特性 面向对象的编程是把现实客观存在的...

  • python基础知识(四)---面向对面编程

    python 面向对面编程 面向对象编程(或者可以称为 面向类编程)。 面向对象 提供的是一种 "语法功能", ...

  • 阿里P8资深架构师耗时一年整理19年Java工程师成神之路

    1、基础篇 01:面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基本原则 → 平台...

网友评论

      本文标题:面向对象基本语法

      本文链接:https://www.haomeiwen.com/subject/rlfzxctx.html