objective-c(继承)
objective-c的继承给出基础例子及注意点:
- 定义并实现基类ClassA
#import <Foundation/Foundation.h> @interface ClassA : NSObject{
@public //@private @protected
//objective-c有三种权限控制,同c++、java;
//1、private:只被该类自己的方法使用,子类也不可用;
//2、protected:默认权限,能够被子类使用;但其他类不可用;
//3、public:完全开放,不建议使用;
int _id;
} @property int _id; -(void) setId:(int)id;
-(void) printName: (NSString*) tag; @end
#import "ClassA.h" @implementation ClassA @synthesize _id; -(void) setId:(int)id{
//此处注意self调用的陷阱
//self.id = input; 造成循环调用
//[self setId:input]; 造成循环调用,与上例等价
_id = id;
} -(void)printName:(NSString *)tag{
NSLog(@"%@,%i", tag,_id);
} @end
- 定义并实现子类B
#import "ClassA.h" @interface ClassB : ClassA{
NSString *_name; //从编程规范性角度建议采用_XX方式
} @property NSString *_name; -(void) setId:(int)id andName:(NSString*)name;
-(void) printName:(NSString *)tag; @end
#import "ClassB.h" @implementation ClassB @synthesize _name; -(void) setId:(int)id andName:(NSString *)name{
[super setId:id]; //使用super初始化基类
self._name = name;
} -(void) printName:(NSString *)tag{
NSLog(@"%@,%i", [self._name stringByAppendingString:tag], self->_id);
//若_id在ClassA中设置为private,则此处报错;
//->不同于.操作符,.操作符相当于是用了get方法,不存在权限控制;
} @end
- 测试
#import <Foundation/Foundation.h>
#import "ClassA.h"
#import "ClassB.h" int main(int argc, const char * argv[]) {
@autoreleasepool { ClassA *tmp0 = [[ClassA alloc]init];
[tmp0 setId:];
[tmp0 printName:@"tag"]; ClassB *tmp1 = [[ClassB alloc] init];
[tmp1 setId: andName:@"hi"];
[tmp1 printName:@"_fredric"]; NSLog(@"%i", tmp0->_id); //除非_id设置为public,否则报权限控制错误; }
return ;
}
objective-c(继承)的更多相关文章
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- Objective C运行时(runtime)
#import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...
- Objective C类方法load和initialize的区别
Objective C类方法load和initialize的区别 过去两个星期里,为了完成一个工作,接触到了NSObject中非常特别的两个类方法(Class Method).它们的特别之处,在于 ...
- Objective C运行时(runtime)技术的几个要点总结
前言: Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相 ...
- Objective-C与C++的区别
1.两者的最大相同:都是从C演化而来的面相对象语言,两者都兼容标准C语言 2.两者的最大不同:Objective-C提供了运行期动态绑定机制,而C++是编译静态绑定,并且通过嵌入类(多重继承)和虚函数 ...
- OC 继承子类对象调用方法机制 子类对象访问父类中的实例变量
在继承中,子类对象如何调用到正确方法的机制 每一个Objective - C对象都有一个隐藏的指针指向类的代码,当向一个对象发送消息的时候,当前的对象会首先在当前类里去查找相应的方法,如果找到的话,直 ...
- Objective-C----MRC内存管理 、 自动释放池 、 面向对象三大特性及封装 、 继承 、 组合与聚合
1 MRC练习 1.1 问题 引用计数是Objective-C语言采用的一种内存管理技术,当一个对象被创建在堆上后,该对象的引用计数就自动设置为1,如果在其它对象中的对象成员需要持有这个对象时,则该对 ...
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性OC篇&Objective新特性
Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...
- Objective中的协议(Protocol)
Objective中的协议(Protocol) 作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法 ...
随机推荐
- 【如何快速的开发一个完整的iOS直播app】(播放篇)
原文转自:袁峥Seemygo 感谢分享.自我学习 前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkpl ...
- 读写SD
public class SD_Files_RW extends Activity implements OnClickListener{ private String Text_of_input; ...
- Vim自动补全神器–YouCompleteMe
YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...
- java 获取本地电脑的分辨率代码
1.代码: java.awt.Toolkit tk=java.awt.Toolkit.getDefaultToolkit(); java.awt.Dimension screenSize= ...
- Python GUI编程--Tkinter
今天看到了GUI编程,书上推荐用wxPython,去官网上看了看,发现Windows的最高支持到2.7,我用的是3.4版本,咋办,用自带的库--Tkinter呗,它是Python的默认GUI库,几乎是 ...
- 使用django-admin.py 时出错
我在安装好django后,运行django-admin.py 时出现两处错误: 一.当你在dos命令下输入django-admin.py 时不会运行,而是以记事本的方式打开了. 解决办法:找到你的dj ...
- TCP头部结构
3.2 TCP头部结构 TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口,目的端端口,管理TCP连接等,本节详细介绍TCP的头部结构,包括固定头部结构和头部选项. 3.2.1 TCP固定 ...
- JavaScript标准库之 - Math
属性 Math.E 欧拉常数,也是自然对数的底数, 约等于 2.718. Math.LN2 2的自然对数, 约等于0.693. Math.LN10 10的自然对数, 约等于 2.303. Math.L ...
- SNMP–Simple Network Management Protocol
I am planning to write an introduction and simple implementation of SNMP in software, when my work w ...
- Android Activity生命周期
从android api文档摘抄出来的activity生命周期图如下: Activity有如下四种状态 a.活动状态 activity处于屏幕前台,获取到了焦点可以和用户进行交互,同一时刻只有一个a ...