您的位置:首页 > 其它

封装、继承与多态

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是子类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: