Objective--C三大特性:封装,继承,多态(杂乱的东西)

OC中类的特性共有有三个,它们分别是封装、多态和继承。

1、成员变量的作用域。成员变量的作用域应该也是封装的一种,它对成员变量的作用范围做出了一些限制。

@public : 在任何地方都可以直接访问成员变量。

@protected:在本类和子类中可以直接访问。

@private:只能在本类中访问。

@package:在同一个框架内可以访问。

默认情况下在类的声明中定义的成员变量的修饰符是@protected,在类的实现中定义的成员变量的修饰符是@private。

总结:(1)封装是为了保护类中的属性,不让外界直接对属性进行访问和赋值。但是我们可以利用set和get来对属性进行赋值和取值。

(2)set方法里可以写上对属性的判断,以免我们输入一些不合理的值给属性。

(3)成员变量的作用域的修饰符有四种,默认情况下在类的声明中定义的成员变量的修饰符是@protected,在类的实现中定义的成员变量的修饰符是@private。

2、继承有什么好处和坏处?

好处:1)我们可以明确的表示两个类之间的关系。2)子类可以继承父类的属性和方法,提高了代码的复用率。

坏处:会增加程序的耦合性。也就是说当有一天我们如果删除了父类,那么子类也将不能再使用,这就是继承的缺点。

3、继承的注意点:

1)父类必须声明在子类的前面。

2)子类的不能重写成员变量,因为子类中不允许有跟父类同名的成员变量。

3)继承不是两个类有相同的属性和方法就可以确定继承关系的。比如说狗中有名字和年龄属性,还有跑和吃饭的方法,这些属性和方法人也可以拥有,但是可以让人继承狗这个类嘛,所以继承还要考虑事物之间的关系。

4、多态的特点:

1)没有继承就没有多态。

2)父类类型的变量不能直接调用子类的方法,必须要强制转化为子类类型才可以。

3)如果函数和方法形参列表中是父类的类型,则可以传入父类或子类的对象。

上面就是继承和多态的介绍。

总结:

(1)继承是指一个类完全地拥有另一个类的属性和方法。

(2)继承时子类可以重写父类的方法,如果要调用父类的方法,可以用super。

(3)继承不可以乱用,我们要理解两个类之间的关系,不是一个类有了另一类的属性和方法就可以继承的。

(4)继承只允许单继承,不能够同时继承多个类。

(5)多态是在继承的基础上实现的。

(6)多态可以在运行时根据对象的类型动态调用方法。

(7)多态不可以直接调用子类的属性和方法。

内存管理总结:

1、OC中是需要进行内存管理的,内存管理的范围是任何OC对象。

2、有alloc就一定要有release,有retain就一定要有release。

3、引用计数器占用四个字节,它是用来表示对象被引用的次数的,如果为0系统就会自动释放内存。

4、对象引用另一个对象的时候,要在set方法里面写该对象的retain,在dealloc中写上该对象的release。

5、@property的参数有很多,对于基本数据类型的变量我们写上 nonatomic和assign,对于OC对象我们写上nonatomic和assign。其中nonatomic是高性能的意思,它用在多线程管理 上,assign是直接赋值的意思,retain是release旧值,retain新值的意思。

构造方法的几个重点:

1、如果需要在初始化的时候就给成员变量赋值,我们就要重写init方法,也就是构造方法。

2、重写构造方法的时候一定要调用父类的构造方法。

3、设计构造方法的时候记得父类的属性交给父类处理。

4、构造方法必须是对象方法。

SEL其实是对方法的一种包装,它是将方法包装成一个SEL类型的数据,根据这个数据我们可以找到对应的方法地址。SEL也就是消息。下面我们根据SEL来调用对象的方法。

// Person类的实现

@implementation Person

- (void)eat

{

NSLog(@"%@在吃饭", _name);

}

@end

int main()

{

Person *p = [[Person alloc] init];

p.name = @"张三";

[p performSelector:@selector(eat)]; // 把方法名包装成一个SEL类型的数据并进行调用

return 0;

}

description是什么呢?它有两种,一种是类方法,一种是对象方法。

1、使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出。返回值是:<类名: 对象地址>。

2、使用NSLog和%@输出某个类对象时,会调用类对象+description方法,并拿到返回值进行输出。返回值是:类名。

我们可以重写description方法来让对象名和类对象名输出我们想要的结果。比如说:

// Person类的实现

@implementation Person

- (void)eat

{

NSLog(@"%@在吃饭", _name);

}

// 重写description方法返回我们需要的东西

- (NSString *)description

{

return [NSString stringWithFormat:@"_name = %@", _name];

}

@end

int main()

{

Person *p = [[Person alloc] init];

p.name = @"张三";

NSLog(@"%@", p); // 输出结果是:_name = 张三

return 0;

}

时间: 2024-12-16 06:39:13

Objective--C三大特性:封装,继承,多态(杂乱的东西)的相关文章

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

面向对象三大特性:封装,继承,多态(一,封装和继承)

封装.继承和多态是面向对象程序设计的三个核心特性. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂.更深入的程序开发. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易. 一.封装 封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,

Java面向对象三大特性 封装 继承 多态

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

面向对象三大特性:封装,继承,多态(二、多态)

多态 一,多态的概念 多态(polymorphism), 是指一个名字可以有多种语义.在面向对象语言中,多态是指在一棵继承树中的类中可以有多个同名但不同方法体及不同形参的方法.通常有两种途径实现多态:方法的重载和覆盖. 多态性允许以统一的风格处理已存在的变量及相关的类.多态性使得向系统里增加新功能变得容易.继承性和多态性是降低软件复杂性有有效技术. 二,多态的实现 1.方法的重载 方法重载时: 参数必须不同.参数个数不同或类型不同. 返回值可以相同,也可以不同. 重载的价值在于它允许通过使用一个

面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)

多态(polymoph)指的是“执行期间(而非编译期间)”判断所引用对象的实际类型.,根据其实际的类型调用其相应的方法. 多态也叫动态绑定,也叫迟绑定. 多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

OOP三大核心封装继承多态

OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用不是父子类的继承关系,而是一个类定义为另一个类的成员变量. 一个简单的例子,汽车和收音机,汽车里面有一个收音机,不能说继承,不符合逻辑,只能说是一种对象包含了另一个对象.汽车对象中调用了收音机对象中的方法. 多态就是同一请求,不同的响应操作. 多态 同一种方式处理相关对象的能力. 相同的请求操作不同

JAVA的三大特征 封装继承多态- 简单总结

简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化. 总的来说还是接口的重用. 那么总结一下,JAVA的三大特征 其好处 就是代码与接口的重用. 封装可以隐藏实现细节,使得代码模块化: 继承可以扩展已存在的代码模块(类): 它们的目的都是为了——代码重用. 而多态则是为了实现另一个目