面向对象语法

//类的声明
#import <Foundation/Foundation.h>
@interface Car :
NSObject  //NSObject让Car类具备有创建对象的能力
{
  
@public
   int wheels;
   int speed;

}
- (void)run;
@end

//类的实现
@implementation Car
- (void) run
{
  
NSLog(@"@%i个轮子,%i世俗的车子跑起来了",wheels,speed);
}
@end

//创建对象
int main()
{
  Car *c = [Car new];
 
c->wheels = 3;
  c->speed = 300;
  [c run];
 
return 0;
}

//分别只设置wheels、speed属性
Car *c1 = [Car new];
wheels-> = 4;
Car *c2
= [Car new];
speed-> = 250;
[c1
run];       //c1为指针变量名  pi是方法名

//一个赋值给另一个,然后修改属性
Car *c1 = [Cae new];
wheels-> =
4;
speed-> =250;
Car *c2 = c1;
c2->wheels = 3;
[c1 run];

//没有@interface,只有@implementation,也能成功定义一个类的
@implementation Car :
NSObject
{
    @public
   int
wheels;
   int speed;
}
- (void) run
{
  
NSLog(@"%i个轮子,%i时速的车子跑起来了",wheels,speed);
}
@end

不带参数的方法

@interface Caculator : NSOject
//方法的声明
-
(double)pi;      //-是方法类型  ()里的是返回值类型  pi是方法名
注意有;号
//方法的实现
- (double)pi
{
   return 3.14;
}

带一个参数的方法

//方法声明   //-是方法类型  ()里的是返回值类型   注意有;号
-
(double)square:(double)number;   //square方法名
:(参数类型)参数名
//方法的实现              
方法调用[c square; 10];  square方法名 10实际参数
-
(double)square:(double)number
{
   return number *
number;
}

带多个参数的方法
//方法声明         方法调用[c
sumOfNum1: 10 andNum2: 21]
- (double)sumOfNum1:(double)num1
andNum2:(double)num2;   //注意有;号
//方法实现
-
(double)sumOfNum1:(double)num1 andNum2:(double)num2
{
   return
num1 + num2;
}

总结要点:

1)       成员变量

  • @interface的大括号{}中声明的变量:wheels、speed

  • @interface的大括号和函数的大括号是不一样的

  • 默认会初始化为0

2)      @public

@public可以让Car对象的wheels和speed属性被外界访问

3)      NSObject

加上:NSObject的目的是让Car类具备创建对象的能力

u       
@interface就好像暴露在外面的时钟表面    声明

u       
@implementation就好像隐藏在时钟内部的构造   实现

1.        常见错误

l        
只有类的声明,没有类的实现

l        
漏了@end

l        
@interface和@implementation嵌套

l        
两个类的声明嵌套

l        
成员变量没有写在括号里面

l        
方法的声明写在了大括号里面

2.        语法细节


l        
成员变量不能在{}中进行初始化、不能被直接拿出去访问

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

l        
成员变量\方法不能用static[‘st?t?k等关键字修饰,别跟C语言混在一起(暂时忽略)

l        
类的实现可用写在main函数的后面,主要在声明后面就行了

1.        方法名注意

l        
冒号也是方法名的一部分

同一个类中不允许两个对象方法同名

3.        OC方法和函数的区别


l        
OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在

l        
C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有

l        
C函数不能访问OC对象的成员

l        
低级错误:方法有声明,但是实现的时候写成了函数

4.     OC的方法注意


l        
方法只有声明,没有实现(经典错误)

l        
方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)

编译的时候:访问没有的成员变量直接报错,访问没有的方法,只是警告

面向对象语法,布布扣,bubuko.com

时间: 2024-10-10 14:46:40

面向对象语法的相关文章

【黑马程序员】————面向对象语法2

一.      set方法和get方法 1.          set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 成员变量尽量不要用@public 2.          set方法 1)       作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 2)       命名规范: 1> 方法名必须以set开头 2> set后面

【黑马程序员】————面向对象语法1

一.  面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 常用术语 面向过程 Procedure Oriented 面向对象 Object Oriented,简称OO 面向对象编程 Object Oriented Programming,简称OOP 二.  类和对象的关系 面向对象中有2个非常重要的概念:类和对象 OC中的面相对象 1)      OC中的类相当于图纸,用来描述一类事物.也就是说,要想创建对象,必须先有类 2)      OC

面向对象语法-02

接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 定义OC的类和创建OC的对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现(定义).跟函数类似,函数有分声明和定义 类的声明 代码编写 定义一个Car类,拥有2个属性:轮子数.时速,1个行为:跑 类名\属性的命名规则:标示符的规则 类名的命名规范:有意义.驼峰标识.首字母大写 #import <Foundation/Foundation.h> // 类的声明 @interfa

OC中的面向对象语法

一. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 打开电脑 播放电脑中的歌曲 关闭电脑 b) 面向对象(不是相亲的“对象”) 电脑 ² 开机 ² 播放歌曲 ² 关机 2) 区别分析 面向过程关注的是解决问题需要哪些步骤:面向对象关注的是解决问题需要哪些对象 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样 想打电话\发短信 à 

面向对象语法-01

面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 面向对象和面向过程的区别 以用电脑听歌为例子 面向过程 打开电脑 播放电脑中的歌曲 关闭电脑 面向对象(不是相亲的“对象”) 电脑 开机 播放歌曲 关机 区别分析 面向过程关注的是解决问题需要哪些步骤:面向对象关注的是解决问题需要哪些对象 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样 现实生活中面向对象的例子 想打电话\发短信 ? 找手机,不用分析电话要

《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)

想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧. 相关内容如下: 一.访问修饰符 二.getter/setter方法 三.构造方法 四.super和this 五.static关键字 六.final关键字 七.方法重写 八.抽象类和接口 一.访问修饰符 Java当中有四种情况,按其访问范围的顺序由小到大分别是: priate(私有)---->default(默认)---->protected(受保护)---->public(公共) 访问范围可以看下图:

PHP 面向对象语法细节

$this伪变量 The pseudo-variable $this is available when a method is called from within an object context. $this is a reference to the calling object (usually the object to which the method belongs, but possibly another object, if the method is called st

OC中的面向对象语法3

一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 2. set方法 1) 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 2) 命名规范: 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写 形参名称不要跟成员变量同名 3. get方法 1) 作用:返回对象内部的成员变量 2) 命名

OC中的面向对象语法4

一. 继承 1. 继承的基本用法 l 设计两个类Bird.Dog // Bird的声明 @interface Bird : NSObject { @public int weight; } - (void)eat; @end // Bird的定义 @implementation Bird - (void)eat { NSLog(@"吃吃吃-体重:%d", weight); } @end // Dog的声明 @interface Dog : NSObject { @public int