//
// 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方法的实现原理的更多相关文章

  1. Atitit paip.对象方法的实现原理与本质.txt

    Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...

  2. JVM源码分析之深入分析Object类finalize()方法的实现原理

      原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 ​“365篇原创计划”第十篇. 今天呢!灯塔君跟大家讲: 深入分析Object类finalize()方法的实现原理 finalize 如果 ...

  3. Python描述符以及Property方法的实现原理

    Python描述符以及Property方法的实现原理 描述符的定义: 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实了__get__(),__set__(),__delete__()中 ...

  4. OC:属性的内部实现原理、dealloc内释放实例变量、便利构造器方法的实现原理、collection的内存管理

    代码: // // main.m #import <Foundation/Foundation.h> #import "Person.h" #import " ...

  5. JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--实现

    先学习下new操作符吧 new关键字调用函数的心路历程: 1.创建一个新对象 2.将函数的作用域赋给新对象(this就指向这个对象) 3.执行函数中的代码 4.返回这个对象 根据这个的思路,来实现一个 ...

  6. jQuery 中 data 方法的实现原理

    前言:jQuery 作为前端使用最多最广泛的 JS 库,其源码每个 JSer 都应该研究一下.早就打算看却一直被各种事拖着,上次某公司面试时被问到 jQuery 中 data 方法是如何实现的,结果答 ...

  7. JavaScript内置一些方法的实现原理--Object.freeze()、instanceof

    const定义的常量,一般是不能修改的. 比如: const TIME_OUT = 10000; 但是当值为引用类型值时,还是可以操作对象,扩展或修改对象属性.方法等等. 以下演示代码的操作是不会报错 ...

  8. apply方法的实现原理

    apply 的核心原理: 将函数设为对象的属性 执行和删除这个函数 指定 this 到函数并传入给定参数执行函数 如果不传参数,默认指向 window Function.prototype.myApp ...

  9. JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--前戏

    new关键字,call/apply/bind方法都和this的绑定有关,在学习之前,首先要理解this. 一起来学习一下this吧 首先.this是一个对象. 对象很好理解,引用类型值,可以实现如th ...

随机推荐

  1. HDU 5344(MZL&#39;s xor-(ai+aj)的异或和)

    MZL's xor Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  2. hdu_1698线段树成段更新

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #d ...

  3. bzoj1433: [ZJOI2009]假期的宿舍(最大二分图匹配)

    1433: [ZJOI2009]假期的宿舍 题目:传送门 题解: 这题有点水 跑个二分图匹配就完事了(注意在校生不是一定都互相认识) 代码: #include<cstdio> #inclu ...

  4. CodeWars for JavaScript

    SubClass https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes Sub classing with ...

  5. 转载-让PIP源使用国内镜像,提升下载速度和安装成功率

    让PIP源使用国内镜像,提升下载速度和安装成功率. 对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替 ...

  6. [poj 2773] Happy 2006 解题报告 (二分答案+容斥原理)

    题目链接:http://poj.org/problem?id=2773 题目大意: 给出两个数m,k,要求求出从1开始与m互质的第k个数 题解: #include<algorithm> # ...

  7. POJ 3145 线段树 分块?+暴力

    思路: 线段树 (分类讨论) 此题数据很水 数据很水 数据很水 但是卡个暴力还是没问题的-- //By SiriusRen #include <cstdio> #include <c ...

  8. <Sicily>Fibonacci

    一.题目描述 In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn-1 + Fn-2 for n ≥ 2. For exampl ...

  9. Java NIO和IO的主要差别

    我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景.以及它们怎样影响您的代码设计. Java NIO和IO的主要差别 下表总结了Java N ...

  10. CodeForces B. The least round way(dp)

    题目链接:http://codeforces.com/problemset/problem/2/B B. The least round way time limit per test 5 secon ...