封装、继承与多态
2015-11-02 22:03
281 查看
一、封装
1.什么是封装?
形象地说就是将方法在类内进行实现的过程。2.成员变量访问修饰符问题(方法是没有访问修饰符,用法和c语言一致):
@public:在类内、类外都可以使用,并且都可以被继承例:在 .h文件中声明一个public类型的成员变量:
@public
int _classInt;
在main.m中进行使用,注意此时只能用指向来调用类中的成员变量,如下:
myClass *mc = [[myClass alloc]init];
mc -> _classInt = 1001;
温馨提示:我们声明的属性默认为protected类型的,并且在类外是可以进行调用,但这并不能说是把属性转化成了public类型。是因为我们这里面有set和get方法。
@private:在类内可以使用,但是在类外无法被调用,并且不可以被继承。
@protected:(默认情况下就是该类型)在类内可以使用,类外无法被调用,但是可以被继承。
@package:在框架内相当于受保护,在框架外相当于私有。
二、继承
注意:oc中没有多继承,如要实现多继承的效果,则需要使用oc中“协议”。我们平常所建的类(父类)都是继承NSObject,我们称之为“基类”,其中的:冒号代表继承关系。
子类可以调用父类的方法(但是如果父类的方法没有在.h中没有进行声明,则子类无法进行继承)。
子类可以调用父类的成员变量(但是要成员变量的调用是由成员变量的访问修饰符种类决定)。
三、多态
1.什么是多态?将方法重写使其有多种状态,称为多态。而方法重写和方法重载是多态的必要手段(但oc中不支持方法重载,只有方法重写)。
2.什么是方法重写?什么是方法重载?
方法的重写:同样的方法名、同样的返回值、同样的参数。
方法的重载:同样的方法名,但是是不同的返回值及参数(包括参数个数和参数类型)。3.在子类中进行方法重写后,但还是调用父类的方法,应该如何实现?
在子类中,对方法重写时,添加一句:
【super 方法名】
注意:
1.【self 方法名】是表示调用当前类方法,如果在方法重写中错写成【self 方法名】,则会造成死循环,或者直接崩溃掉。
2.父类的变量可以接收子类的对象,
如:Printer *printer = 【【BlackPrinter alloc】init】;
【printer print】;
其中,Printer是父类,BlackPrinter是子类。
相关文章推荐
- POJ 1050 To the Max
- c++ primer第五版(中文)习题答案 第二章第五节-处理类型
- 使用UIL(Universal-Image-Loader)异步加载图片
- jquery 操作DOM元素(1)
- 六、jquery操作下拉列表
- 记录——《C Primer Plus (第五版)》第十章编程练习第三题
- 记项目中的一次错误之RecyclerView
- (转) 通过input分片的大小来设置map的个数
- iOS开发音频播放基础——AVAudioPlayer的应用
- LeetCode Delete Node in a Linked List 链表
- 【剑指offer】-从尾到头打印链表
- 阿里投资Magic Leap 是美酒还是毒药?
- hdu 1175 连连看问题
- win7忘记密码不用工具进入
- 楼道声光控工作原理
- 关于jquery 如何判断checkbox 是否选中
- hdu 4353
- Freescale KL02 freedom board KL02 FRDM quick start快速上手
- Codeforces Round #327 (Div. 1) D. Top Secret Task
- 记录——《C Primer Plus (第五版)》第十章编程练习第二题