继承,初始化方法,便利构造器

1、成员访问类型

private:私有成员,不能被外部函数访问(使用),也不能被子类继承;

protected:保护成员,不能被外部函数访问,可以被子类继承;

public:公有成员,可以被外部函数访问,也可以被子类继承。

OC中,所有的方法(消息),都是公有的。

2、重写(继承的另一部分)

子类可以从父类继承方法,但是有时候父类的方法不适合子类,子类就可以写一个自己的同名方法,覆盖掉父类的同名方法,叫做重写。

重写的时候,在子类的.h中不必重新声明,直接在.m中写实现就可以。

1 //父类声明文件

2 #import <Foundation/Foundation.h>

3 @interface Father : NSObject

4 -(void)run;

5 -(void)jump;

6 @end

7

8 //父类实现文件

9 #import "Father.h"

10 @implementation Father

11 -(void)run{

12     NSLog(@"he is running!");

13     return;

14 }

15 -(void)jump{

16     NSLog(@"father can jump 1.2m");

17 }

18 @end

1 //子类声明文件

2 #import "Father.h"

3

4 @interface Son : Father

5

6 @end

7

8 //子类实现文件

9 #import "Son.h"

10

11 @implementation Son

12 -(void)jump{

13      NSLog(@"he can jump 0.6m");

14 }

15 @end

其中,子类重写父类的jump方法,不需要重新声明。

同一个方法,不同的实现,称为多态。重写是多态的一种。

继承的好处:

  1)创建大量的相似类的时候,可以节省工作量。

  2)使用框架中的类,或已经写好的类,继承该类,生成一个派生类,比原类更好用。

注意:NSString、NSArray、NSDictionary都是不能够继承的。

3、虚方法

OC的方法都是虚方法

  1)父类的指针可以指向子类的对象

1 Son * son = [[Son alloc] init];

2 Father * p = son;

上面p和son都指向子类的对象;调用方法时,不看指针,看对象,对象的地址指向什么对象,就调用什么方法,称为虚方法。

  2)调用方法时,不看指针看对象,这样的方法叫做虚方法。虚方法的好处:可以描述不同事物被相同事件触发,产生不同的响应(结果)。体会下面的例子

动物的父类声明与实现

1 //动物类声明

2 #import <Foundation/Foundation.h>

3 @interface Animal : NSObject

4 -(void)beBeaten;

5 @end

时间: 2024-10-29 19:07:31

继承,初始化方法,便利构造器的相关文章

OC基础:继承.初始化方法,便利构造器

继承: 1.单向继承,一个类只能有一个父类,一个父类可以有多个子类. 2.单向继承,基类(根类)是OSObject 3.子类可以继承父类的属性和方法 当父类的方法不满足子类的需求时,子类可以重写父类的方法,重写父类的方法,在子类中不需要再次声明. 1.完全重写 2.部分重写   使用super 建立继承关系之后,子类可以继承父类的: 1.实例变量,@[email protected]修饰情况之下 2.公开的方法 一个方法如果在.h中声明了,那么这个方法就是公开的方法,如果没有声明,则是私有的.

第三讲.继承,完整初始化方法,遍历构造器,多态(代码) 另附植物大战僵尸练习

//初始化和遍历构造器使用 //person.h文件 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 5 { 6 7 NSString *_name; 8 int _age; 9 NSString *_sex; 10 11 12 } 13 14 +(id)PersonWithName:(NSString*)name age:(int)age; 15 -(id)initWithName:(NSStrin

Objective-C 继承、初始化方法、便利构造器

继承.初始化方法.便利构造器 今天我们要学习继承 初始化方法 以及遍历构造器 首先我们要理解一些概念性的东西. 继承: 在OC里,继承是单继承的,所谓的单继承就是一个子类继承一个父类,例如我们之前创建的Person类是继承于NSObject的.回顾一下继承的格式 @interface Person : NSObject //在冒号后面是继承的父类. 人继承与NSObject 子类是只能继承一个父类,但父类却可以有多个子类.例如: @interface Student : Person // 学生

继承,初始化

继承 初始化方法 继承继承的上层: 父类 ,继承的下层:子类继承是单向的,不能相互继承.继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为子类能继承父类全部的特征和行为.面向对象提供了的继承语法,能够大大简化代码,把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可继承既能保证类的完整,又能简化代码,让类与类之间的关系更加紧密. 继承特点OC中只允许单继承没有父类的类称为根类,OC中的根类是NSObject(祖宗). 继承的内容:所有实例变量和方法.如果子类不

OC实例变量初始化方法

OC实例变量初始化方法1. 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx2. 使用实例功能类方法,默认初始化方法 + setName:xxx age:xxx3.使用实例初始化方法 initWith开头的方法4.使用构造器 类名+With…以Person  Student两个类为例1. 使用实例 setter方法这是最麻烦的方法 @interface Person : NSObject { NSString *_name; NSString *_sex

继承、初始化?方法、便利构造器

继承特点 OC中只允许单继承. 没有?父类的类称为根类,OC中的根类是NSObject(祖宗). 继承的内容:所有实例变量和?方法. 如果?子类不满意?父类?方法的实现,可以重写(overwrite)?父 类的?方法. 继承具有传递性 完成初始化方法 - (void)init { //给super发送init消息:即执行父类中实现的init方法 self = [super init]; if (self) { //初始化设置 } //返回初始化完成的对象 return self; } 上面称作

Objective-C学习笔记_继承、初始化方法、便利构造器

一.继承 继承的上层:父类,继承的下层:子类.继承是单向的,不能相互继承.继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和?为.子类能继承父类全部的特征和行为. 例题 打僵尸.需求: 1.定义普通僵尸类: 实例变量:僵尸总血量.僵尸每次失血量. 方法:初始化方法(总血量).被打击失血.死亡. 2.定义路障僵尸类: 实例变量:僵尸总血量.僵尸每次失血量,道具,弱点. 方法:初始化方法(总血量).被打击失血.失去装备.死亡. 3.定义铁桶僵尸类: 实例变量:僵尸总血量.僵尸每次失血量,道

OC03-继承,便利构造器,初始化方法

继承 继承 继承的主要作用就是保证类的完整以及简化代码. 使用时把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法就行 特点: 只允许单继承 OC中的根类是NSObject 继承的内容:是所有实例变量和方法 如果子类中不想用父类方法的实现,可以重写方法 注意: 继承的上层是父类,下层是子类 继承是单向的,不能相互继承 继承是有传递性的,即如果A继承于B,B继承于C,A就具有B和C的特征和行为 子类可以继承父类全部的特征和行为 继承的实现 #import <Foundation

Objective-C( 继承,初始化方法)

一.继承 1.继承的上层:父类,继承的下层:子类 2.继承是单向的 3.继承具有传递性:子类继承父类的特征和行为 4.子类扩展父类,更加具体 oc中的继承 1.oc中的继承,即一个类继承另一个类: 2.被继承的类称为父类或超类: 3.继承的类为子类 继承的特点 1.oc中只允许单继承 2.没有父类的类称为根类.oc中的根类是  NSObject 3.继承的内容:除了私有变量外的所有实例变量和方法 4.子类可以重写父类的方法 super 1.oc中的关键字 2.作用:给super发送消息,可执行父

【学习ios之路:Object-C】继承,便利构造器.NSString应用

1.继承定义 公共父类使用场景:当多个类之间存在部分相同的特征以及行为时,为了防止多个类中写重复代码,新建一个公共的父类,父类中填写多个类中相同的特征以及行为,让多个类继承即可. 2.继承特点 *.继承内容:父亲全部的实力变量以及方法 *.继承过来的内容的所有权:继承过来的内容是自己的,只不过来源于父类, *.OC中只允许单继承,也就是一个类只能有一个父类, *.继承具有传递性.A继承自B,B继承自C,A拥有B和C的所有的内容. *.继承不具备互逆性;不能A继承B,B再继承A. *.继承过来的内