OC语言6—继承

转载 2016年05月31日 13:00:14

一、基本概念

程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量)。

image

在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类。

继承的好处:

  1. 抽取出了重复的代码

  2. 建立了类和类之间的联系

继承的缺点:

耦合性太强

二、OC中的继承

@interface Animal:NSObject

//动物里继承了NSObject,获得NSObject类的方法;

@end
@interface Dog :Animal

//dog类继承Animal类

@end

注意:OC语言是单继承语言。在oc语言中,基本上所有类的根类都是NSObject类。

三、继承的使用注意

  1. 编译器从上往下执行,所以在子类前面至少应该要有父类的声明;

  2. OC中不允许子类和父类拥有相同名称的成员变量名;

  3. OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层的往上找;

提示:重写即子类重新实现了父类中的某个方法,覆盖了父类以前的实现。

示意图:一共有三个类,Person类继承了NSObject类,Student类继承了Person类。
image

创建一个Student *s=[[Student alloc] init];

此时会把Student类和这个类的父类加载进内存。

提示:每个类中都有一个super class指针,该指针指向自己的父类。对象中有一个isa指针,该指针指向调用该对象的类。

四、继承和组合

继承的适用场合:

  1. 当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。

  2. 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类(考虑),在这种情况下,也可以考虑使用组合。

继承:###是xxx,如狗是动物,可以让狗继承动物类

组合:###拥有xxx,如学生有书,可以让书这个类作为学生类的属性

五、关键字super

Super关键字,在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。

作用:

  1. 直接调用父类中的某一个方法

  2. Super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的类方法。

使用场景:子类在重写父类方法时,想要保留父类的一些行为。

OC继承详解与使用规则

1、OC中如果类A继承类B,B就成为A的父类。那么B的成员全部属于A的成员。相当于A全部拥有了B的所有成员(所有变量与所有方法)。即子类拥有父类中所有的成员变量和方法。 2、继承的使用场合: (1)如...
  • u013087513
  • u013087513
  • 2015年08月15日 09:07
  • 1525

OC语言之封装,继承,多态

# 封装 ##1.面向对象三大特性 - 封装性 - 继承性 - 多态性 --- ##2.什么是封装 - 封装性就是隐藏实现细节,,仅对外公开接口。 ![](http://7xj0kx.com1.z0....
  • u012938194
  • u012938194
  • 2016年02月06日 15:50
  • 1296

iOS开发之OC语法基础(二)--继承和实例化

一、目标 1、掌握面向对象编程特性——继承 2、掌握OC中的自定义初始化方法 3、掌握OC中的便利构造器的写法 二、Objective-C 1、OC中,一个类可以继承另外一个类 2、被继承的类称为...
  • u013985004
  • u013985004
  • 2014年11月22日 00:10
  • 736

黑马程序员-OC语言-继承

继承的表现多个类中存在相同属性和行为时,讲这些内容抽取到一个单独的类中(父类),那么多个类无需再定义这些属性和行为了,只要继承单独的那个类就可以了.这种拥有另外一个类的属性和方法的方式成为继承. 如...
  • fuyao19920730
  • fuyao19920730
  • 2015年12月19日 14:04
  • 177

黑马程序员——OC语言——继承

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 继承             XXX是XXX 一,概念:      1,应...
  • yangshaoxia222
  • yangshaoxia222
  • 2015年04月16日 21:28
  • 181

【黑马程序员】【OC语言】继承

1.继承的基本用法 1 #import 2 /* 3 1.继承的好处: 4 1> 抽取重复代码 5 2> 建立了类之间的关系 6 3> 子类可以拥有父类中的所有成员变量...
  • u010419580
  • u010419580
  • 2015年10月12日 21:51
  • 126

iOS概念入门学习-OC-类的继承和派生

概要:本文介绍了类的继承和派生的基本概念和其应用(多态)
  • cuin123
  • cuin123
  • 2015年08月15日 23:38
  • 1578

为什么OC中Foundation下特殊的类不能被继承

Foundation框架下的类几乎都不能被继承。这是因为zhe
  • u010165653
  • u010165653
  • 2014年11月11日 20:36
  • 553

OC的动态继承编译机制

【问】为什么OC不能sizeof一个对象的大小或一个类的大小?和类结构相近的结构体却可以。 【再问】为什么OC不能将对象声明到静态空间,如栈中?和类结构相近的结构体却可以。 【答】因为OC的动...
  • shuju345
  • shuju345
  • 2015年08月23日 10:16
  • 464

我的OC练习(五)-@property的使用和子类继承的练习

先贴我的练习代码: main.m // // main.m // 4th // // Created by Morning on 2015/11/09. // Copyright © 201...
  • morning_jcg
  • morning_jcg
  • 2015年11月09日 15:40
  • 621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC语言6—继承
举报原因:
原因补充:

(最多只允许输入30个字)