您的位置:首页 > 其它

继承和类设计

2016-03-18 21:26 155 查看
==========================

继承和类设计

==========================

oc是一门面向对象的语言,面向对象编程有三大特性:封装、继承、多态

一.封装

【注】封装就是把某些解决一些问题的代码进行模块化,对外部暴露一个接口。我们都称为封装了一个方法;

【优点】

1.封装可以增强代码的复用度。

2.封装可以有效提高开发速度。

二.继承

子类拥有了父类的方法和属性的情况,我们称为继承;

A:B(读作:A类继承B类,也就A类拥有了B类的方法和属性)

【优点】

1.不用书写任何代码,就可以实现某一些功能;

2.可以不用修改父类的方法,对父类进行扩展;

三.多态

多态:类的多种形态

【总结】

多态的方式,可以有效的缩减代码量

多态多用在具有相同方法名的类中,外部在调用方法之前,并不清楚需要调用哪个类中方法;

四.类别(category)(扩展)

有一些第三方类、咱们程序员以前自己写的一些类,要用到的时候突然发现如果这个类能有一个xxx方法那就好了,但是又不允许对第三分类或者以前写的类进行修改。那么怎么办?就可以用到类别(扩展)

1.认识category

#import <Foundation/Foundation.h>

#import "dog.h"

// 使用类别的时候需要先包含头文件

// 类别一般单独放到一个类中进行扩展

#import "NSString+print.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

NSString* str = @"hello world hahah";

[str show];

NSLog(@"%@",str);

dog* mydog = [[dog alloc]init];

[mydog test];

}

return 0;

}

#import <Foundation/Foundation.h>

// NSString 就是要扩展的类 ()小括号内部就是你自己写的类名

@interface NSString (print)

//这个位置写需要扩展出来的方法

-(void)show; // 打印当前对象

// 可以扩展成员方法,但是不可以扩展成员变量

// 【注】类别就是为了扩展第三方类或者其它以前自己写的类方法,但是又不可以对第三方和之前写的方法进行修改,而存在的;

@end

#import "NSString+print.h"

@implementation NSString (print)

-(void)show

{

//打印当前对象

NSLog(@"%@",self);

}

@end

#import <Foundation/Foundation.h>

@interface dog : NSObject

-(void)test;

@end

#import "dog.h"

#import "NSString+print.h"

@implementation dog

-(void)test

{

NSString* str = @"我是dog class";

[str show];

}

@end

继承和类别的区别

1.类别是对类的方法进行扩展,不能添加成员变量。但是继承可以在原有父类的基础上对方法和成员变量进行扩展。

2.类别只能添加新的方法,不能修改删除原类的方法,但是继承可以增加和修改;

3.类别不提倡对原有方法进行重载,但是继承可以。

4.类别可以被继承,如果父类中实现了类别,子类也就存在此类别。

2.认识extension(扩展)也是类别的一种;

【知识扩展】

1.声明在.h中的方法或者属性变量,外界可以访问;

2.声明在.m中的属性变量或者方法,只是当前类可以访问;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: