黑马程序员Objective-C笔记:封装,继承,多态
2015-01-07 21:45
344 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
封装是通过限制只有特定类的实例可以访问这一特定类的成员,而他们通常利用接口实现消息传递。通 常来讲,成员会根据他们的访问权限被分为三种:公有成员(public),私有成员(private),保护成
员(protected)
过滤不合理的值
屏蔽内部的赋值过程
让外界不必关注内部的细节
@interface B:A //英文的冒号,代表继承
//在这里定义B自己的成员变量和声明自己的方法
@end
A称为B的父类,B称为A的子类
2.建立了类之间的关系
子类可以拥有父类中的所有成员变量和方法
基本上所有的根类都是NSObject
注意:
1.父类必须声明在子类前面
2.不允许子类和父类有相同名称的成员变量
3.调用某个方法时,优先去当前类中找,如果找不到就会去父类中找
重写:子类重新实现父类中的某个方法,用来覆盖父类中以前的做法
每个对象里默认有个isa指针,指向自己的类,自己的类里默认也有个supercalss指针,这个指针又指向父类,父类用也有个supercalss指针,这个指针又指向NSObject类
坏处:耦合性太强,即两个类的关系太紧密,如果父类损坏,子类就用不了
继承的使用场合:
1.当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2.当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类
组合:和继承的区别是,继承是全部拥有,而组合是部分拥有.
2.多态总结:
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数/方法参数中使用的是父类类型,可以传入父类,子类对象
4.局限性:父类类型的变量不能直接调用子类特有的方法,如果想用,必须强制换位子类类型变量后,才能直接调用
3.多态的局限性
父类类型的变量不能用来调用子类的方法
如果非要这么做,可以利用类型强制转换
如:
4.多态应用实例
如果参数中使用的是父类类型,可以传入父类,子类对象,可以节省代码
一.封装
1.什么是封装:
封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,或者叫接口。具备封装性的程序 是隐藏了某一方法的具体执行步骤,取而代之的是通过消息传递机制传送给它。比如说,“狗”这个类中 有“吠”这个方法,这个方法定义了狗具体应该如何吠,但是外人并不需要知道它是如何吠的。封装是通过限制只有特定类的实例可以访问这一特定类的成员,而他们通常利用接口实现消息传递。通 常来讲,成员会根据他们的访问权限被分为三种:公有成员(public),私有成员(private),保护成
员(protected)
2.封装的用法:
@public的成员可以被随意赋值,使用set和get方法来管理成员的访问
3.封装的好处:过滤不合理的值
屏蔽内部的赋值过程
让外界不必关注内部的细节
二.继承
1.什么是继承
继承性是指,在某种情况下,一个类下面会有一个子类,这个子类理论上来说会比之前的类(父类)具体化。比如还是“狗”这个类,假设它里面有一个成员变量是身高和体重,有一个方法是咬人。然后再假设这个“狗”类中有“哈士奇”和“金毛”这两种狗,这两种狗除了继承其父类中的成员和方法外,还有自己添加的一些,比如在“哈士奇”这个狗的类中添加了打滚的行为,在“金毛”这个狗的类中添加了卖萌这个行为,这些都是其父类所不具有的,而子类之间所独有的行为和属性是不能相互用的,就比如“哈士奇”不能卖萌,因为这是“金毛”私有的。2.继承的用法
类B继承类A,类B有A的所有成员变量和方法@interface B:A //英文的冒号,代表继承
//在这里定义B自己的成员变量和声明自己的方法
@end
A称为B的父类,B称为A的子类
3.继承的好处
1.抽取重复代码2.建立了类之间的关系
子类可以拥有父类中的所有成员变量和方法
基本上所有的根类都是NSObject
注意:
1.父类必须声明在子类前面
2.不允许子类和父类有相同名称的成员变量
3.调用某个方法时,优先去当前类中找,如果找不到就会去父类中找
重写:子类重新实现父类中的某个方法,用来覆盖父类中以前的做法
每个对象里默认有个isa指针,指向自己的类,自己的类里默认也有个supercalss指针,这个指针又指向父类,父类用也有个supercalss指针,这个指针又指向NSObject类
坏处:耦合性太强,即两个类的关系太紧密,如果父类损坏,子类就用不了
继承的使用场合:
1.当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2.当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类
组合:和继承的区别是,继承是全部拥有,而组合是部分拥有.
三.多态
1.什么是多态:
利用多态创建对象时,调用方法时会检测对象的真实对象,调用真实地对象方法,父类定义的指针指向子类创建的对象。2.多态总结:
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数/方法参数中使用的是父类类型,可以传入父类,子类对象
4.局限性:父类类型的变量不能直接调用子类特有的方法,如果想用,必须强制换位子类类型变量后,才能直接调用
3.多态的局限性
父类类型的变量不能用来调用子类的方法
如果非要这么做,可以利用类型强制转换
如:
4.多态应用实例
如果参数中使用的是父类类型,可以传入父类,子类对象,可以节省代码
相关文章推荐
- 黑马程序员——Objective--C笔记之封装 继承 多态
- 黑马程序员--IOS学习笔记(封装、继承、多态)
- 黑马程序员-OC学习笔记-----封装、继承、多态
- 黑马程序员-------面向对象的封装、继承、多态一些学习笔记
- 黑马程序员——Objective-C——封装、继承、多态
- 黑马程序员—Objective-C学习—封装、继承、多态
- 黑马程序员——自学笔记6(封装、继承和多态)
- 【黑马程序员】iOS学习之路——Objective-C之封装、继承和多态
- 黑马程序员——Objective-C语言知识整理——封装、继承与多态
- 黑马程序员java学习笔记——面向对象的特征封装、继承和多态
- 黑马程序员——OC笔记之面向对象三大特征(封装、继承、多态)
- 【Objective-C学习笔记】OC三大特性:封装、继承、多态
- 黑马程序员——Objective-C的封装、继承与多态
- 黑马程序员—Objective-C基础_封装、继承、多态
- 黑马程序员-我的入学笔记4-类的继承和多态
- 黑马程序员_java基础-封装继承多态
- 黑马程序员_五 【初识面向对象】【类、构造方法、对象】【封装、继承、多态】【this、super】
- Java基础笔记 – 面向对象三个特征 继承、封装、多态及编程细节提示
- 黑马程序员-------java学习笔记之继承与多态
- Java学习笔记——类与对象(封装、继承与多态)