1. 类的定义

>用关键字@interface进行声名  @end 结束

>所有的类有一个基类NSobject

>类名 也是标示符 第一个字母大写 如果多个字母组成 每个单词的首字母大写

>类名  冒号":"后  是父类(继承父类)

>成员变量 (属性)  用大括号{ }包含起来

>方法的声明用两种  +号表示类方法(类名调用)  -表示实例方法9(对象调用)

以下是Person类的声明:

#import <Foundation/Foundation.h>

@interface Person:NSObject{

//成员变量

//默认是受保护的  封装特性  不允许外面的变量进行访问

int grade;

@public

int age;

int numberId;

}

//1.方法必须 -号 或者 +号 开头

//2. -号 后面是函数的返回值

//3.方法名称

//4.变量

-(void)printPerson;

-(void)passedAge:(int)newAge;

//带两个参数的方法声明  理解:(void) 函数的返回值

//passedAge 对第一个参数的描述

//AndNumberId 对第二个参数的描述

-(void)passedAge:(int)newAge AndNuberId:(int)newNumberId;

-(void)passedAge:(int)newAge AndNuberId:(int)newNumberId AndGrade:(int)newGrade;

+(void)test;

@end

2.类的实现

>类的实现 采用关键字@implemention   以@end结束

以下为Person类的实现文件

#import "Person.h"

@implementation Person

-(void)printPerson{

NSLog(@"===实例方法===person info %d__%d",age,numberId);

}

-(void)passedAge:(int)newAge{

age = newAge;

NSLog(@"===实例方法===赋值===%d",age);

}

-(void)passedAge:(int)newAge AndNuberId:(int)newNumberId{

age = newAge;

numberId = newNumberId;

NSLog(@"===实例方法===赋值===%d__%d",age,numberId);

}

-(void)passedAge:(int)newAge AndNuberId:(int)newNumberId AndGrade:(int)newGrade{

age = newAge;

numberId = newNumberId;

grade = newGrade;

NSLog(@"===实例方法===赋值===%d__%d__%d",age,numberId,grade);

}

//类方法 (加号方法)

+(void)test{

NSLog(@"===用类名调用类方法===");

}

@end

3.调用Person类

>Person 发送一个new消息(调用new方法) 在系统里分配存储空间(堆空间)  并将存储空间的首地址返回   (创建对象)

在main函数里面调用  以下代码为Person类的调用

 

//创建person对象

Person *person = [Person new];

NSLog(@"===地址===地址===%p",person);

person->age = 10;

NSLog(@"===间指===%d",(*person).age);

NSLog(@"===间指===%d",person->age);

//通过对象去调用 printPerson方法 (实例方法)

[person printPerson];

//通过类名去调用  test方法 (对象方法)e

[Person test];

//对参数赋值  调用带参数的方法

[person passedAge:10];

[person passedAge:20 AndNuberId:30];

[person passedAge:40 AndNuberId:50 AndGrade:60];

//new == alloc init  创建两个对象 person1  person2

Person *person1 = [[Person alloc] init] ;

NSLog(@"===地址===地址===%p",person1);

Person *person2 = [Person new];

NSLog(@"===地址===地址===%p",person2);

OC学习--OC中的类--类的定义,成员变量,方法的更多相关文章

  1. 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型

    我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...

  2. java接口中定义成员变量

    //抽象类中可以定义如下成员变量:public abstract class People { public String name; public int age; public abstract ...

  3. OC学习总结之面向对象和类

    OC学习总结之面向对象和类   Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象 ...

  4. (转载)php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗?

    (转载)http://s.yanghao.org/program/viewdetail.php?i=184313 php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗? class block ...

  5. 带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用。除非是main里的局部变量。因为main方法就是static的啊。

    带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用.除非是main里的局部变量.因为main方法就是static的啊.

  6. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  7. JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置

    前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...

  8. OC学习——OC中的@protocol(@required、@optional)、代理设计模式

    一.什么是协议? 1.协议声明了可以被任何类实现的方法   2.协议不是类,它是定义了一个其他对象可以实现的接口   3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议.   4.协 ...

  9. Java学习日记基础篇(四)——类,对象之成员变量,成员方法,构造方法

    面向对象(Object Oriented) 一.面向对象杂谈 面向对象(Object Oriented),我的翻译是以物体为目标的,就是说编程的时候是建立一个物体,然后对这个物体进行操作. Java语 ...

随机推荐

  1. thinkphp 模板变量输出替换和赋值

    一.变量输出的几个方法 <?php namespace app\index\controller; use http\Params; use think\Config; use think\Co ...

  2. 使用 Visual Studio 调试器附加到运行的进程

    为什么调试附加进程? Visual Studio 调试器可以附加到在 Visual Studio 外运行的进程. 可以使用此附加功能执行以下操作: 调试并非在 Visual Studio 中创建的应用 ...

  3. swan.after

    解释: swan.after可以拦截所有当前运行小程序对于API的调用,默认传入function时,只在API函数调用的返回阶段拦截.如果传入Object,则可以选择拦截的阶段(例如: 返回阶段.回调 ...

  4. App中h5音频不能播放问题

    前置:以下问题是针对vue项目的解决方案 问题一:IOS中音频不能自动播放 原因:ios禁止了音频自动播放 解决办法:在vue的生命周期mounted中获取音频Dom并调用音频播放方法play(),注 ...

  5. Magic Line

    Magic Line 玄学过题系列,随机选在所有点左下方的点,然后对其他点斜率排序,取斜率在中间两个点之间 比赛时,左下方点不够随机==,导致没卡过去 #include<bits/stdc++. ...

  6. Ponds

    Ponds Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Sub ...

  7. properties与yml之间的比较

    在Spring Cloud的配置文件中,发现使用yml与properties两种后缀的文件: 在application.properties中内容是这样的: server.port=8801eurek ...

  8. <R语言编程艺术>的一个错误以及矩阵相加

    R语言编程艺术讲矩阵这节时,举了个随机噪声模糊罗斯福总统画像的例子.但是里面似乎有个错误,例子本意是区域外的值保持不变,而选定区域的值加一个随机值,但是实际情况是两个行列不相等的矩阵相加,会报错,如果 ...

  9. 台哥原创:java 俄罗斯方块源码

    大四的时候,用java开发,耗时一周 界面参照当时用的联想手机里的俄罗斯方块 ​ 这里的级别,标识难度,1是初级,方块下降速度很慢,5是最高级,下降速度最快 ​ 得分:每消除一行,会给10分,同时消除 ...

  10. nginxUbuntu安装Nginx和正确卸载Nginx Nginx相关 与Nginx报错:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解决方法

    https://www.cnblogs.com/zhaoyingjie/p/6840616.html https://blog.csdn.net/adley_app/article/details/7 ...