黑马程序员——IOS基础(OC面向对象编程三)
来源:互联网 发布:织梦cms使用教程 编辑:程序博客网 时间:2024/05/22 22:12
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、使用super
super关键字表示父类,可以使用super访问父类中被子类隐藏的或重写的方法,例如使用“[super setX]"表示调用父类的
setX方法。
ClassA.h代码:
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
{ int x; }
- (void) setx;
@end
ClassA.m代码:
#import " ClassA.h"
@implementation ClassA
- (void) set X
{ x = 10; }
@end
ClassB.h代码:
#import <Foundation/Foundation.h>
#import " ClassA.h "
@interface ClassB: ClassA
- (void) printX;
- (void) setX;
@end
ClassB.m代码:
#import"ClassB.h"
@implementation ClassB
- (void) printX
{ NSLog(@"%i",x); }
- (void)setX
{ x = 11;
[super setX];
}
@end
执行以下代码:
#import "ClassA.h"
#import "ClassB.h"
int main (int arge, const char * argv[ ])
{ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
ClassB.ClassB = [[ClassB alloc]init];
[classB setX];
[classB printX];
[classB release];
[pool drain];
return 0;
}
程序执行结果:10
二、抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但反过来却不是这样,并不是所有的类都是用来描绘对象的
,如果一个类中乜有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表示我们在对问题
领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质相同的具体概念的抽象。抽象类定义的母的主
要是为了别的类能从它们那里继承,这些抽象的方法和属性能够被很多不同的子类使用,从而保证子类继承一个相同的定义,
抽象类能够减少实现子类的负担。但OC语言没有特别的关键字来定义抽象类,从层面上说,OC没有抽象类这个概念。
三、动态方法调用
超类的引用变量可以引用子类对象,OC就是使用这个原则来实现动态调用。
示例代码:
Test1.h代码:
#import <Cocoa/Cocoa.h>
@interface Test1 : NSObject { }
-(void) print;
@end
Test1.m代码:
#import ”Test1.h"
@implementation Test1
- (void) print
{ NSLog(@"我是test1“);}
@end
然后定义另一个类,它也包含了一个同名的方法,打印出来一行不同的句子以示区分
Test.h代码:
#import <Foundation/Foundation.h>
@interface Test : NSObject { }
- (void) print;
@end
Test.m代码:
#import ”Test1.h"
@implementation Test1
- (void) print
{ NSLog(@"我是test“);}
@end
测试:
ClassTest.m代码:
#import <Foundation/Foundation.h>
#import "Test.h"
#import "Test1.h" int main (int arge, const char *argv[] )
{ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
idTest = test;
[idTest print];
idTest = test1;
[idtest print];
[test release];
[test1 release];
[pool drain]
return 0;
}
程序结果为: 我是test
我是test1
四、访问控制
在接口部分声明实例变量的时候,可以把下面的三个指令放在实例变量的前面,以便更加精确地控制作用域
@protected:用此指令修饰的实例变量可以给该类和任何子类定义的方法直接访问,这是默认的情况
@private:用此指令修饰的实例变量可被定义在该类的方法直接访问,但不能被子类中定义的方法直接访问
@public:用此指令修饰的实例变量可以被该类中的方法直接访问,也可以被其他类定义的方法直接访问。
访问指令的用法:
#import <Foundation/Foundation.h>
@interface Test;NSObject
{ @public
int i;
int j;
@protected
float m;
float n;
@private
double x;
double y;
}
@end
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
- 黑马程序员——IOS基础(OC面向对象编程三)
- 黑马程序员——IOS基础(OC面向对象编程一)
- 黑马程序员——IOS基础(OC面向对象编程二)
- 黑马程序员-IOS-OC基础-面向对象语法三
- 黑马程序员——OC基础——面向对象的三大特性(三)
- 黑马程序员——OC基础---面向对象(思想,类,对象,三大特性)
- 黑马程序员——OC基础——面向对象的三大特性(一)
- 黑马程序员——OC基础——面向对象的三大特征(二)
- 黑马程序员—OC语言基础—面向对象的三大特性(1)
- 黑马程序员—OC语言基础—面向对象的三大特性(2)
- 黑马程序员——ios开发基础之OC中的面向对象以及对象特性
- 黑马程序员——OC语言基础——面向对象三大特性之封装
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员——OC语言基础——面向对象三大特性之多态
- 黑马程序员——OC基础—-----面向对象三大特性总结
- 黑马程序员——OC语言基础篇---面向对象之三大特性
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员—OC语言面向对象三大特性
- 微软100题(4) 在二元树中找出和为某一值的所有路径
- 胜利大逃亡—bfs+状态压缩
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
- 使用opencv进行数字识别
- tgvvdyv
- 黑马程序员——IOS基础(OC面向对象编程三)
- LeeCode 判断两个二叉树是否相等
- 【坑】discuz中CSS中的图片的URL显示为localhost的解决
- CCSpriteFrameCache精灵帧缓存分析(2)
- gflags 判断一个flag是否设置
- C#中的方法的参数传递。
- 学习编程的第一天
- Java 一个关于魔兽世界5人小队的组合问题
- ubuntu 安装Git