//
// Person.h
#import <Foundation/Foundation.h> @interface Person : NSObject @property int age;
@property NSString *name; /*
自定义构造方法:
其实就是自定义一个init方法
1.一定是对象方法
2.一定返回id/instancetype
3.方法名称一定以init开头
*/
- (instancetype)initWithAge:(int)age; //- (instancetype)initwithAge:(int)age; // 注意: 自定义构造方法中的init后面的With的W一定要大写 // 一个类可以有0个或者多个自定义构造方法
- (instancetype)initWithName:(NSString *)name; // 自定义构造方法可以有1个或多个参数
- (instancetype)initWithAge:(int)age andName:(NSString *)name;
@end
//
// Person.m #import "Person.h" @implementation Person - (instancetype)init
{
if (self = [super init]) {
_age = ;
}
return self;
} - (NSString *)description
{
return [NSString stringWithFormat:@"age = %i, name = %@", _age, _name];
} - (instancetype)initWithAge:(int)age
// 注意: 自定义构造方法中的init后面的With的W一定要大写
//- (instancetype)initwithAge:(int)age
{
if (self = [super init]) {
_age = age;
}
return self;
} - (instancetype)initWithName:(NSString *)name
{
if (self =[super init]) {
_name = name;
}
return self;
} - (instancetype)initWithAge:(int)age andName:(NSString *)name
{
if (self = [super init]) {
_age = age;
_name = name;
}
return self;
}
@end
//
// Student.h #import "Person.h" @interface Student : Person @property int no; // 学号 - (instancetype)initWithAge:(int)age andName:(NSString *)name andNo:(int)no;
@end
//
// Student.m
// day14 #import "Student.h" @implementation Student - (instancetype)initWithAge:(int)age andName:(NSString *)name andNo:(int)no
{
/*
if (self = [super init]) {
// _age = age;
// 狗拿耗子, 多管闲事
// 自己的事情自己做
[self setAge:age];
[self setName:name];
}
*/
if (self = [super initWithAge:age andName:name]) {
_no = no;
}
return self;
} - (NSString *)description
{
return [NSString stringWithFormat:@"age = %i, name = %@, no = %i", [self age], [self name], _no]; //父类的属性是私有的。
}
@end
//
// main.m
// 自定义构造方法在继承中的表现 #import <Foundation/Foundation.h>
#import "Student.h"
#import "Person.h" int main(int argc, const char * argv[]) { // Student *stu = [[Student alloc] initWithAge:30 andName:@"lnj"];
Student *stu = [[Student alloc] initWithAge: andName:@"lnj" andNo:];
NSLog(@"%@", stu);
return ;
}

oc36--自定义构造方法在继承中的表现的更多相关文章

  1. JAVA 继承中的this和super

    学习java时看了不少尚学堂马士兵的视频,还是挺喜欢马士兵的讲课步骤的,二话不说,先做实例,看到的结果才是最实际的,理论神马的全是浮云.只有在实际操作过程中体会理论,在实际操作过程中升华理论才是最关键 ...

  2. 转转转!java继承中的this和super

    学习java时看了不少尚学堂马士兵的视频,还是挺喜欢马士兵的讲课步骤的,二话不说,先做实例,看到的结果才是最实际的,理论神马的全是浮云.只有在实际操作过程中体会理论,在实际操作过程中升华理论才是最关键 ...

  3. 《java入门第一季》之面向对象面试题(继承中构造方法的关系)

    /* 继承中构造方法的关系 A:子类中所有(子类的有参和无参)的构造方法(默认都会访问父类)中(空参数)的构造方法,默认访问父类空参数构造,不默认访问有参数构造 B:为什么呢? 因为子类会继承父类中的 ...

  4. Java 继承中构造方法的执行顺序问题

    在Java中,如果一个类没有任何显式创建的构造器则该类默认会有一个无参构造器:如果显式创建了有参构造器则该类就不再有默认无参构造器. 在Java继承中,构造器并不能被继承,而是被显示或隐式调用. 1. ...

  5. Java--Inheritance constructor继承中的构造方法问题(二)

    看了前辈的博客,觉得这两点说的精辟:子类构造方法必须要调用父类的某个构造方法:被子类调用的父类构造方法在父类中必须是存在的. 上篇的例子有一点不明白,子类继承了父类的成员变量,父类的构造函数里引用了该 ...

  6. Java--Inheritance constructor继承中的构造方法问题(一)

    Java规定,一个父类可以同时拥有多个子类,但一个子类只能有一个父类,即单重继承,允许多层继承,即子类还可以有自己的子类,在下一层继承关系中原先的子类就变成了父类,这样的继承关系就形成了继承树. 子类 ...

  7. java之继承中的构造方法

    继承中的构造方法  1.子类的构造过程中必须调用其基类的构造方法. 2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法. 2.1.使用this(argumen ...

  8. java的继承中构造方法

    构造方法在创建对象的时候是被自动调用的,然后在继承中,是先调用父类的构造方法,然后在调用子类的构造方法, 当构造方法重写之后,在super中添加对应你想要调用构造方法的参数 例:父类 package ...

  9. OC中自定义构造方法

    格式 -(instancetype)init(){ self=[super init] if(self){ } return self; } 自定义构造方法规范 1)一定是对象方法,以减号开头 2)返 ...

随机推荐

  1. html5——盒子模式

    box-sizing属性 box-sizing: border-box;/*内减模式*/ box-sizing: content-box;/*外加模式(默认值)*/ box-sizing: paddi ...

  2. Json——转义符

    C#后台直接输出Json字符串需要反斜杠“\” context.Response.Write("[{\"Name\": \"wqx\", \" ...

  3. Lvs Keepalive DR模式高可用配置

    Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...

  4. POJ_3279_(dfs)(状态)

    ---恢复内容开始--- Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8219   Accepted:  ...

  5. 大神所写的深度好文---Gradle 构建工具

    什么是构建工具? 我们大家都知道 Gradle 是一种构建工具,那么什么是构建工具呢? 网上一大堆的文字解释我觉得很难理解,这里我以咱们 Android 开发来举个例子吧. 我们以前开发都是用 Ecl ...

  6. JAVA中EXTENDS 与 IMPLEMENT 区别

    简单说: 1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements, ...

  7. GCD & Operation queues & Thread

    One of the technologies for starting tasks asynchronously is Grand Central Dispatch (GCD). This tech ...

  8. 文件上传原理--FileReader

    单个文件:<div> <input value="上传" type="file" id="photos_upload"&g ...

  9. JSON,对象..的数据格式

    [此案例为自动产生的随机数] 对象: {a1:180,a2:721, a3:574} 序列化传值:将对象转化为Json字符串 public ActionResult Val2() { Random r ...

  10. matplotlib命令与格式:标题(title),标注(annotate),文字说明(text)

      1.title设置图像标题 (1)title常用参数 fontsize设置字体大小,默认12,可选参数 ['xx-small', 'x-small', 'small', 'medium', 'la ...