美文网首页
Objective-C的封装、继承与多态

Objective-C的封装、继承与多态

作者: 炸街程序猿 | 来源:发表于2017-06-06 22:32 被阅读0次

面向对象有三大特征:封装、继承和多态。

一、封装

封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。简而言之,信息隐藏,隐藏对象的实现细节,不让用户看到,以此来增强安全性和简化编程,进而达到封装的目的。

使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

访问修饰符:private、protect、public

private:私有的,不可供外部访问的信息,只有类本身能存取.

protect:受保护的,类和派生类可以存取.

Internal:只有同一个项目中的类可以存取.

Protected Internal:是Protected和Internal的结合.

Public:公有的,完全共享存取.

二、继承

Objective-C 的继承具有单继承的特点,每个子类都只能有一个直接父类。然而,他可以有无限多个间接父类。

当子类继承父类时,子类可以得到父类的:

1.全部成员变量

2.全部方法

OC中子类继承父类语法格式:

1 @interface 类名:父类名

2 {

3 //成员变量

4 }

5 //方法

6 @end

另外,需要注意的是NSObject类是根类,所有的类的父类(直接父类或间接父类)。

说到父类,就得讲到super关键字

super关键字在实例方法中代表父类对象的本身,在类方法中代表父类,可以使用super关键字调用从父类继承下来的方法。

在实例方法中使用super只能调用到父类的实例方法,在类方法中使用super只能调用到父类的类方法。

复制代码

1 @interface Person:NSObject

2 {

3

4 }

5 -(void)run;//这是实例方法

6 +(void)sleep;//这是类方法

7 @end

复制代码

@interface Student:Person

{

}

@end

复制代码

1 @implementation Student

2 -(void)testRun{

3  [super sleep];//这是错误的,因为sleep是类方法。在实例方法中,super只能调用父类的实例方法

4  [super run];

5 }

6 +(void)testSleep{

7  [super sleep];

8  [super run];/这是错误的,因为run是实例方法。在类方法中,super只能调用父类的类方法

9 }

复制代码

三、多态

多态:一种事物的多种形态。不同类的对象可以定义共享相同名称的方法,这个就是多态的表现形式。

实现多态的条件:

1.必须存在继承关系

2.子类重写父类的方法

3.父类声明的变量指向子类对象

OC指针类型的变量有两个:编译时类型和运行时类型。编译时类型由声明变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现多态。

1 @interface Person:NSObject

2 {

3 }

4-(void)run;

5 @end

1 @interface Student:Person

2 {

3

4 }

5 @end

1 @interface Teacher:Person

2 {

3

4 }

5 @end

1 Person *personStudent=[[Student alloc]init];//此时编译时类型和运行时类型不一致,发生多态

2 [personStudent run];

3 Person *personTeacher=[[Teacher alloc]init];

4 [personTeacher run];//父类Person的run方法表现的形式为多种形态,这就叫多态

相关文章

  • iOS开发之一OC语言的特性

    三大特性:封装、继承、多态 一、封装(成员变量的封装) 二、继承 三、多态(多种形态)

  • Objective-C的封装、继承与多态

    面向对象有三大特征:封装、继承和多态。 一、封装 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象...

  • Java多态及相关

    面向对象有三大特征:封装、继承、多态。从一定角度看,封装与继承是为多态准备的。多态也是面向对象中最重要的概念。 多...

  • java多态

    概述 面向对线的四个基本特征:抽象,封装,基础,多态。抽象,封装,继承是多态的基础,多态是抽象,封装,继承的表现 ...

  • 【Golang】封装,继承与多态

    面向对象的基本思想主要体现在封装,继承以及多态等的设计与运用上。这篇文章主要讲述,封装、继承与多态在golang中...

  • Objective-C的特点

    Objective-C的特点1.Objective-C和Java C++一样,有封装,继承,多态,重用。但是它不像...

  • Python基础-day12

    list ​ 封装 ​ 继承 面向对象的三大特性 ​ 封装 继承 多态 封装 ​ 生活里 ​ ...

  • 31-封装、继承、多态

    封装、继承、多态 面向对象编程有三大重要特征:封装、继承和多态。 继承 继承机制实现了代码的复用,多个类公用的代码...

  • Java的基本特性

    关系 Java的四个基本特性分别是抽象,封装,继承,多态。概括起来可以这么理解,抽象、封装、继承是多态的基础,多态...

  • iOS基础 - oc的三大特性

    封装、继承、多态 oc是面向对象的程序设计语言,而面向对象的三大特征:封装、继承、多态。 封装 没有绝对的封装,只...

网友评论

      本文标题:Objective-C的封装、继承与多态

      本文链接:https://www.haomeiwen.com/subject/ykwnfxtx.html