在面向对象的语言中都会由继承这种语法,而继承我们通常使用is a 来确定继承的关系,在objcet-c中继承是使用冒号来确定继承的,从下面的例子来了解继承:

1.创建一个studet的对象

------声明

#import <Foundation/Foundation.h>

//我们创建的类必须继承了NSobject对象

@interface student : NSObject{

int _age;

}

-(void)setAge:(int) newAge;

-(int) age;

@end

#import "student.h"

-----实现方法

@implementation student

-(void)setAge:(int)newAge{

_age =newAge;

}

-(int)age{

return_age;

}

@end

2.创建一个叫小明的学生继承了student

---声明

#import <Foundation/Foundation.h>

#import "student.h"

//@class student --------------------这里不能使用@class关键字来引用

@interface liming : student

{

NSString *name;

}

//子类特有的方法

-(void)speak;

-(void) setName:(NSString *)newName;

-(NSString *) name;

@end

------实现

#import "liming.h"

@implementation liming

-(void)setName:(NSString *)newName{

name = newName;

}

-(NSString *)name{

returnname;

}

- (NSString *)description

{

return [NSStringstringWithFormat:@"my name is %@", name];

}

-(void)speak{

NSLog(@"hello my age is %i",self.age);

}

@end

-----mian方法

#import <Foundation/Foundation.h>

#import "student.h"

#import "liming.h"

int main(int argc, constchar * argv[])

{

@autoreleasepool {

liming *lim =  [[limingalloc]init];

lim.age = 23;

lim.name =@"小明";

//%@是调用OC中的descrition方法,我们在liming类中重写了description方法

NSLog(@"%@",lim);

}

//创建子类使用父类进行接受

student *ss = [[limingalloc]init];

ss.age=22;

//        //使用父类进行接收对象依然是可以进行调用子类中的方法,但是Xcode会报警告,Student中没有这个方法。

[ss speak];

return0;

}

OC中继承:

1.在OC中继承是单继承的。liming类继承了student类,就不能继承其他类。
2.在OC中使用的继承的时候我们不能使用关键字@class来进行包含继承的类,只能使用@Import来包含我们的继承类,因为我们的如果要继承一个类要知道该类中有什么的方法,因此我们不能使用@class来进行包含我们的类。
3.在OC中创建一个子类可以使用父类来进行接收,但是在调用子类的方法的时候,系统是可以进行调用,但是Xcode会报警告但是程序可以运行,不建议使用父类来接受子类。至于为什么可以执行成功可以通过继承的机制来解答。

4.在继承的机制中,对于方法的调用是从子类开始找方法,如果找到方法就会执行子类中的方法,如果没有找到就会到父类中进行查找。再调用父类中的方法。在继承的关系中变量的使用,是从父类开始找。

@class关键会在另外个博文说明。

转载于:https://blog.51cto.com/8551527/1395036

object-c中的继承相关推荐

  1. Python中的继承和多态

    本文以生活中的基础现象为切入点,主要介绍了Python基础中继承和多态,包括单继承.多继承的语法.多态常见的 "鸭子类型". 以及如何重写父类的方法都做了详细的讲解. 一.继承的介 ...

  2. python中的object是什么意思_Python object类中的特殊方法代码讲解

    python版本:3.8class object: """ The most base type """ # del obj.xxx或del ...

  3. php中 继承中的概念,JavaScript_JavaScript中的继承方式详解,js继承的概念 js里常用的如下 - phpStudy...

    JavaScript中的继承方式详解 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于 ...

  4. Thread和Object类中关于线程的相关方法

    Thread和Object类中线程的7个重要方法概览 类 方法名称 简介 Thread sleep相关 相关表示sleep所有的重载方法,参数不同,实际作用大同小异 Thread join() 等待其 ...

  5. 重写Java Object类中的equals()方法

    Java中的Object类中的equals方法 Object类的equals方法 重写Object类的equals()方法 Person类默认继承了Object类,所以可以使用Object类的equa ...

  6. JavaScript学习13 JavaScript中的继承

    JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript">//继承第一种方式: ...

  7. Object Pascal 中类型

    Object Pascal 中类型的一些注意 2010-04-16 14:15 --------------------------------------------------------- 原创 ...

  8. 详细分析如何在java代码中使用继承和组合

    文章目录 继承与组合 何时在Java中使用继承 何时在Java中使用组合 继承与组成:两个例子 用Java继承重写方法 Java不具有多重继承 使用super访问父类方法 构造函数与继承一起使用 类型 ...

  9. java的继承_java中的继承(一)

    在java中,所有的类都有一个默认的父类Object,即使我们没有显式的去继承这个类.在Object类中定义了一些方法,其中有几个方法是我们必须掌握的,比如equals方法,hashCode方法,wa ...

  10. Python中菱形继承的MRO顺序及property属性

    Python中菱形继承的MRO顺序及property属性 文章目录 Python中菱形继承的MRO顺序及property属性 一.Python中菱形继承的MRO顺序 1. 单独调用父类的方法 2. 多 ...

最新文章

  1. java 输出全年日期_Java 输出某一年所有的日期
  2. VMware文件共享
  3. 输入学生成绩,并按升序排列 Ascending.java
  4. Unable to open /dev/sda的原因之一
  5. c语言脸型图案,[转载]各种脸型的分析及修饰
  6. python cnn程序_python cnn训练(针对Fashion MNIST数据集)
  7. P3211 [HNOI2011]XOR和路径
  8. 关于dsoframer VC++下的使用
  9. Android车载应用开发与分析(11)- 车载Android应用开发入门指南
  10. 如何快速的入门单片机?单片机自学教程有哪些?
  11. eMule电驴使用从入门到精通
  12. mysql引用表无效列_Mysql使用索引可能失效的场景
  13. 秀米怎么添加附件链接
  14. 刚刚!中国最有前途的30座城市排名公布
  15. 图文讲解安装Adobe Photoshop 2021 for Mac(附下载dmg安装包)
  16. 罗克韦尔自动化启用位于硅谷的新建电动汽车创新中心
  17. 深入 javascript 之 call函数 用法
  18. 数据预处理与特征工程—12.常见的数据预处理与特征工程手段总结
  19. 基于空间平滑MUSIC算法的相干信号DOA估计(2)
  20. 模块电路选型(5)----电机驱动模块

热门文章

  1. pycharm中R工具包的安装
  2. css3树形图,CSS3 树形堆栈
  3. eplices如何导入外部代码_java环境配置的理解
  4. Spring Context 你真的懂了吗?
  5. java实现登录注册案例_Java基于IO版实现用户登录注册的案例
  6. php源代码序列号,php如何生成不重复的序列号
  7. java内存规范_Java内存模型-jsr133规范介绍
  8. 字节增强java_java字节增加 - longjunping的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. gitlab使用_如何在正确使用 Docker 搭建 GitLab
  10. 已调信号波形是怎样的_【鼎阳硬件智库原创 | 测试测量】初识任意波形发生器...