Objective-C学习笔记(二十五)——属性与方法的继承学习
2015-07-24 20:15
615 查看
继承是面向对象中除了封装之后的第二大特性。继承使类之间可以不断的扩展,因此会有父类与子类的关系。子类继承自父类,可以从父类中继承属性和方法。下面我们来看一下。
(一)属性的继承。
(1)新建MyClass类,继承自NSObject类;再新建MySubClass类,继承自MyClass类。此时对于MySubClass来说,MyClass就是基类,也是父类,自己就是子类。在父类MyClass中声明一个属性。
(2)同时在main.m中进行实例化,发现不仅MyClass可以访问className这个属性,MySubClass也可以访问className这个属性。表示子类已经从父类中继承了该属性。
(二)方法的继承
(1)在上一个例子的基础上,来实现下对象方法的继承,注意,在OC中方法是没有访问修饰符。在MyClass.h中声明一个方法:
(2)去MyClass.m中实现该方法,只要打印出该类的类名即可。
(3)在main.m中分别用MyClass,MySubClass的对象调用该方法,发现都可以进行调用,所以可以知道对象方法是可以继承的。
(4)结果输出:从结果中可以看出,子类从父类继承属性和方法后,基本上是相互独立的。子类对象可以对这些属性和方法进行访问和调用。
.
总结,如果一个方法在类中没有声明,只有实现,则表示该方法不能被外界调用,也不能被继承,就好像被私有化了一样。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
(一)属性的继承。
(1)新建MyClass类,继承自NSObject类;再新建MySubClass类,继承自MyClass类。此时对于MySubClass来说,MyClass就是基类,也是父类,自己就是子类。在父类MyClass中声明一个属性。
@property(nonatomic,strong) NSString *className;//这里属性是可以被继承的;
(2)同时在main.m中进行实例化,发现不仅MyClass可以访问className这个属性,MySubClass也可以访问className这个属性。表示子类已经从父类中继承了该属性。
//父类 MyClass *myClass = [[MyClass alloc]init]; myClass.className = @"MyClass"; //子类 MySubClass *mySubClass = [[MySubClass alloc]init]; mySubClass.className = @"MySubClass";
(二)方法的继承
(1)在上一个例子的基础上,来实现下对象方法的继承,注意,在OC中方法是没有访问修饰符。在MyClass.h中声明一个方法:
-(void)report;
(2)去MyClass.m中实现该方法,只要打印出该类的类名即可。
-(void)report{ NSLog(@"ClassName = %@",_className); }
(3)在main.m中分别用MyClass,MySubClass的对象调用该方法,发现都可以进行调用,所以可以知道对象方法是可以继承的。
//父类 MyClass *myClass = [[MyClass alloc]init]; myClass.className = @"MyClass"; [myClass report]; //子类 MySubClass *mySubClass = [[MySubClass alloc]init]; mySubClass.className = @"MySubClass"; [mySubClass report];
(4)结果输出:从结果中可以看出,子类从父类继承属性和方法后,基本上是相互独立的。子类对象可以对这些属性和方法进行访问和调用。
.
总结,如果一个方法在类中没有声明,只有实现,则表示该方法不能被外界调用,也不能被继承,就好像被私有化了一样。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
相关文章推荐
- Objective-C学习笔记(二十四)——成员变量的访问修饰符学习
- pyqt的setObjectName()/findChild()
- Objective-C学习笔记(二十三)——面向对象之封装
- Objective-c的MD5/SHA1加密算法的实现
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- 黑马程序员_Objective-C语言_继承和多态
- Objective-C学习笔记(二十二)——初始化方法init的重写与自定义
- Objective-C语言的 if ( self = [super init] )
- [学习记录]removeObjectAtIndex:删除指定位置的元素
- php array与object 相互转化
- iOS内存管理(objective-c)
- Objective-C NSNotificationCenter (通知)的使用方法
- OC学习笔记之blcok
- 使用WaitForMultipleObjects()修正SwapLists
- Objective-C学习笔记(二十一)——函数的返回值与参数类型
- 黑马程序员_Objective-C语言_封装(汇总)
- Objective-C Runtime
- Objective-C Runtime 运行时之四:Method Swizzling
- jQuery静态方法isPlainObject,isEmptyObject方法使用和源码分析
- 随笔-property follows cocoa naming convention for returning 'owned' objects