OC学习--OC中的类--类的定义,成员变量,方法

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中的类--类的定义,成员变量,方法的更多相关文章
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
- java接口中定义成员变量
//抽象类中可以定义如下成员变量:public abstract class People { public String name; public int age; public abstract ...
- OC学习总结之面向对象和类
OC学习总结之面向对象和类 Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程 面向对象和面向过程是编程的两种思考方式.面向对象 ...
- (转载)php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗?
(转载)http://s.yanghao.org/program/viewdetail.php?i=184313 php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗? class block ...
- 带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用。除非是main里的局部变量。因为main方法就是static的啊。
带有public static void main方法的类,其中的成员变量必须是static的,否则main方法没法调用.除非是main里的局部变量.因为main方法就是static的啊.
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一. 引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...
- JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置
前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...
- OC学习——OC中的@protocol(@required、@optional)、代理设计模式
一.什么是协议? 1.协议声明了可以被任何类实现的方法 2.协议不是类,它是定义了一个其他对象可以实现的接口 3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议. 4.协 ...
- Java学习日记基础篇(四)——类,对象之成员变量,成员方法,构造方法
面向对象(Object Oriented) 一.面向对象杂谈 面向对象(Object Oriented),我的翻译是以物体为目标的,就是说编程的时候是建立一个物体,然后对这个物体进行操作. Java语 ...
随机推荐
- Robomongo可视化命令
## 更新命令示例 db.getCollection('collection_name').update( {'_id':ObjectId('id string')}, {$set:{' ...
- APP稳定性测试-monkey执行
Monkey命令行可用的全部选项 *示例 : adb shell monkey -p cn.lejiayuan.alpha --pct-touch 30 --pct-motion 15 --pct-t ...
- [洛谷P2459] SDOI2011 消耗战
问题描述 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知 ...
- Codeforces 512B: Fox And Jumping
题目链接 题意说的是,有n种卡片,使用第i种卡片可以使当前自己在数轴上的位置移动 l[i],要获得使用第i种卡片的代价是 c[i],求能使自己移动到数轴上任意位置的最小代价,如果不可能则输出-1 当前 ...
- js执行上下文与执行上下文栈
一.什么是执行上下文 简单说就是代码运行时的执行环境,必须是在函数调用的时候才会产生,如果不调用就不会产生这个执行上下文.在这个环境中,所有变量会被事先提出来(变量提升),有的直接赋值,有的为默认值 ...
- CentOS下安装Chrome浏览器中文显示为方框
执行如下三条命令 yum groupinstall "X Window System" -y yum -y groupinstall chinese-support yum -y ...
- C# 与 C++,语法差别有多小-第二章 C++浏览
(一)动态内存分配和指针 C++:new 和 delete int *arr = new int[ 4 ]; C#:只有new,de ...
- 【CF1257F】Make Them Similar【meet in the middle+hash】
题意:给定n个数,让你给出一个数,使得n个数与给出的数异或后得到的数的二进制表示中1的数量相同 题解:考虑暴搜2^30去找答案,显然不可接受 显然可以发现,这是一个经典的meet in the mid ...
- MySQL JOIN 多表连接
除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接.多表连接基本语法如下: 1 ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON ...
- [IOI2018] meetings 会议
https://www.luogu.org/problemnew/show/P5044 题解 这种关于最大值或者最小值的问题,可以往笛卡尔树的方面想. 先考虑一个朴素的\(dp\),设\(dp[l][ ...