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. Linux下python pip手动安装笔记

    今天查问题, 从redis集群中模糊查询某个key, 用一些重复的命令, 链接不同的node, redis-cli 去查, 感觉不舒服. 考虑写一些shell或py来简化一下. 一查环境, 安装了py ...

  2. [BZOJ] 聚会

    问题描述 Y 岛风景美丽宜人,气候温和,物产丰富.Y 岛上有 N 个城市,有 N-1 条城市间的道路连接着它们.每一条道路都连接某两个城市.幸运的是,小可可通过这些道路可以走遍 Y岛的所有城市. 神奇 ...

  3. 2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法

    Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言.Sas ...

  4. linux运维、架构之路-Nginx提高

    一.虚拟主机搭建 1.基于域名的虚拟主机 [root@web01 html]# cat nginx.conf worker_processes ; events { worker_connection ...

  5. dubbo-go 中的 TPS Limit 设计与实现

    前言 Apache Dubbo 是由阿里开源的一个RPC框架,除了基本的 RPC 功能以外,还提供了一整套的服务治理相关功能.目前它已经是 Apache 基金会下的顶级项目. 而 dubbo-go 则 ...

  6. python全栈开发,Day44(IO模型介绍,阻塞IO,非阻塞IO,多路复用IO,异步IO,IO模型比较分析,selectors模块,垃圾回收机制)

    昨日内容回顾 协程实际上是一个线程,执行了多个任务,遇到IO就切换 切换,可以使用yield,greenlet 遇到IO gevent: 检测到IO,能够使用greenlet实现自动切换,规避了IO阻 ...

  7. Python全栈开发,Day1

    一.Python介绍及版本 Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. 目前Python主要应用领域: 云计算:云计算最火的语言 WEB开发:众多优秀的WEB框架,众多大型网站均为 ...

  8. swan.after

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

  9. 做网站用php还是python

    单纯说做网站,显然是php更适合,php是专为web而生,而Python只是可以做web.php也比python更简单,更容易学,对于新手更友好. 从权威技术网站w3techs.com2017年7月2 ...

  10. centos 无界面安装selenium+chrome+chromedirver的设置

    配了一中午的,好不容易正好记录下. 1.我的centos的位数 输入rpm -q centos-release 结果:centos-release-7-4.1708.el7.centos.x86_64 ...