封装、继承与多态

一、封装

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是子类。
                                                                 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值