new方法的实现原理
//
// main.m
// 04-new方法的实现原理 #import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h" int main(int argc, const char * argv[]) { /*
Person * p = [[Person alloc] init]; [p run]; Person * p1 = [Person new]; [p1 run]; Person * p2 = [Person person]; [p2 run]; Student * stu = [Student new]; [stu sleep]; // Dog *dog = [[Animal alloc]init ]; Student * stu2 = [Student person]; [stu2 sleep]; */ // Person * person = [[Person alloc] initWithName:@"笑着"];
/*
Person * per = [Person personWithName:@"xiaozhe"]; [per run]; NSLog(@"%@",per); Student * stu = [Student personWithName:@"奶茶"]; [stu sleep]; NSLog(@"%@",stu);
*/ // NSString * str = [NSString string] // NSArray * array = [NSArray arraywi] Student * stu = [Student studetWithName:@"笑着"];
[stu sleep]; NSLog(@"%@",stu); return 0;
}
#import <Foundation/Foundation.h> @interface Person : NSObject @property NSString * name;
@property int age; - (id)initWithName:(NSString *)name; - (void)run; +(id)person; +(id)personWithAge:(int)age; +(id)personWithName:(NSString *)name; +(id)personWithName:(NSString *)name andAge:(int)age; @end
#import "Person.h" @implementation Person - (id)initWithName:(NSString *)name
{
if (self = [super init])
{
_name = name;
}
return self;
} +(id)person
{
//
// Person * p = [[Person alloc] init];
//谁调用。他就代表谁
Person * p = [[self alloc] init];
//[[Person alloc] init]
//[[Sutdent alloc] init]
return p;
} +(id)personWithName:(NSString *)name
{ /*
Person * person = [[self alloc] initWithName:name]; return person;
*/ Person * person = [self person];
person.name = name; return person; } - (void)run
{ NSLog(@"人跑起来了");
} - (NSString *)description
{
return [NSString stringWithFormat:@"name %@", _name];
} @end
#import "Person.h" @interface Student : Person - (void)sleep; +(id)studet; +(id)studetWithName:(NSString *)name; @end
#import "Student.h" @implementation Student +(id)studet
{
return [self person];
} +(id)studetWithName:(NSString *)name
{
return [self personWithName:name];
} - (void)sleep
{
NSLog(@"就爱睡");
} @end
new方法的实现原理的更多相关文章
- Atitit paip.对象方法的实现原理与本质.txt
Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...
- JVM源码分析之深入分析Object类finalize()方法的实现原理
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 “365篇原创计划”第十篇. 今天呢!灯塔君跟大家讲: 深入分析Object类finalize()方法的实现原理 finalize 如果 ...
- Python描述符以及Property方法的实现原理
Python描述符以及Property方法的实现原理 描述符的定义: 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实了__get__(),__set__(),__delete__()中 ...
- OC:属性的内部实现原理、dealloc内释放实例变量、便利构造器方法的实现原理、collection的内存管理
代码: // // main.m #import <Foundation/Foundation.h> #import "Person.h" #import " ...
- JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--实现
先学习下new操作符吧 new关键字调用函数的心路历程: 1.创建一个新对象 2.将函数的作用域赋给新对象(this就指向这个对象) 3.执行函数中的代码 4.返回这个对象 根据这个的思路,来实现一个 ...
- jQuery 中 data 方法的实现原理
前言:jQuery 作为前端使用最多最广泛的 JS 库,其源码每个 JSer 都应该研究一下.早就打算看却一直被各种事拖着,上次某公司面试时被问到 jQuery 中 data 方法是如何实现的,结果答 ...
- JavaScript内置一些方法的实现原理--Object.freeze()、instanceof
const定义的常量,一般是不能修改的. 比如: const TIME_OUT = 10000; 但是当值为引用类型值时,还是可以操作对象,扩展或修改对象属性.方法等等. 以下演示代码的操作是不会报错 ...
- apply方法的实现原理
apply 的核心原理: 将函数设为对象的属性 执行和删除这个函数 指定 this 到函数并传入给定参数执行函数 如果不传参数,默认指向 window Function.prototype.myApp ...
- JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--前戏
new关键字,call/apply/bind方法都和this的绑定有关,在学习之前,首先要理解this. 一起来学习一下this吧 首先.this是一个对象. 对象很好理解,引用类型值,可以实现如th ...
随机推荐
- Logical Operators (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/logical-operators-transact-sql Logical ...
- 使用caffemodel模型(由mnist训练)测试单张手写数字样本
caffe中训练和测试mnist数据集都是批处理,可以反馈识别率,但是看不到单张样本的识别效果,这里使用windows自带的画图工具手写制作0~9的测试数字,然后使用caffemodel模型识别. 1 ...
- linux下修改完profile文件的环境变量后如何立即生效
方法1: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # . /etc/profile 注意: . 和 /etc/profile 有空格 方法2: 让/etc/profile文 ...
- CSS提高渲染速度的写法
写CSS的习惯,决定页面渲染速度的快慢,这一点在脑残的IE里更加明显.养成良好的习惯,乃至形成规范,会让你的页面更快速的加载,用户体验度更高,下面是零度逍遥总结的一些提高CSS渲染速度的写法,供大家参 ...
- 使用freerdp远程连接Windows桌面(转载)
使用freerdp远程连接Windows桌面 之前使用的是rdesktop,但是由于其不支持NLA认证,便不能登录公司的电脑.为此,现在使用freerdp——这是package的名字,实际的可执行程序 ...
- JAVA程序类加载及其反射机制
[IT168 技术]当调用java命令运行某个Java程序时,该命令将启动一条Java虚拟机进程,同一个JVM的所有线程,所有变量都处于同一进程里,它们都是用该JVM进程的内存区. 程序运行到最后正常 ...
- session 存入 memcahce
<?php header('content-type:text/html;charset=utf-8'); class RedisSessionHandler{ public $ttl; //失 ...
- CF209C Trails and Glades(欧拉路)
题意 最少添加多少条边,使无向图有欧拉回路. n,m≤106 题解 求出每个点的度数 奇度数点需要连一条新边 仅有偶度数点的连通块需要连两条新边 答案为上面统计的新边数 / 2 注意:此题默认以1为起 ...
- Python3 利用POP3与smtplib进行计算机远程控制
初习,代码有不足之处,欢迎指出. 跟大家分享的是,通过发送端发送cmd命令,从而对接收端进行cmd命令的控制. #接收端代码 from poplib import POP3 import time,o ...
- Python学习七步走
在周五的下午三点钟(为什么是这个时间?因为事情总会在周五下午三点钟发生),你收到一条通知,客户发现你的软件出现一个错误.在有了初步的怀疑后,你联系运维,查看你的软件日志以了解发生了什么,因为你记得收到 ...