Objective-C继承
继承
只是想谈谈在OC中继承的理解:
面向对象语言中一个主要的功能就是继承。继承可以使用现在类的所用功能,是对功能的扩展,通过继承创建的新类称为“子类”或“派生类”,被继承的称为“基类”或者“父类”。继承的过程就是从一般到特殊的过程。
语法规则:@interface 子类: 父类
下面的代码就是一个例子:
1,创建汽车类,声明并实现其属性和方法。
2,创建卡车类,继承于汽车类,声明并实现其特有的方法和属性
3,创建出租车类。继承与汽车类,声明并实现其特有的属性和方法。
4,在main.m中测试子类是否能继承父类的属性和方法。
1 #import <Foundation/Foundation.h>
@interface Car : NSObject
@property(nonatomic,assign)NSString *brand;
@property NSString *color;
-(void)brake;
-(void)quicken;
@end #import "Car.h"
@implementation Car
-(void)brake
{
NSLog(@"%@车刹车了!",_brand);
}
-(void)quicken
{
NSLog(@"%@车加速了!",_brand);
}
@end #import "Car.h"
@interface Truck : Car
@property(nonatomic,assign)float maxWeight;
-(void)unload;
@end #import "Truck.h"
@implementation Truck
-(void)unload
{
NSLog(@"%@颜色的%f载重的%@货车\n开始卸货!",self.color,self.maxWeight,self.brand);
}
@end #import "Car.h"
@interface Taxi : Car
@property(nonatomic,assign)NSString *company;
-(void)printTick;
@end #import "Taxi.h"
@implementation Taxi
-(void)printTick
{
NSLog(@"%@公司%@颜色的%@出租车\n开始打印发票!",self.company,self.color,self.brand);
}
@end 输出结果:
2016-02-26 19:22:05.689 CarNew[3045:405948] 法拉利车刹车了!
2016-02-26 19:22:05.690 CarNew[3045:405948] 法拉利车加速了!
2016-02-26 19:22:05.690 CarNew[3045:405948] 白颜色的2.600000载重的法拉利货车
开始卸货!
2016-02-26 19:22:05.690 CarNew[3045:405948] 宝马车刹车了!
2016-02-26 19:22:05.691 CarNew[3045:405948] 宝马车加速了!
2016-02-26 19:22:05.691 CarNew[3045:405948] 中国四方公司黑颜色的宝马出租车
开始打印发票!
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) 作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法 ...
随机推荐
- Delphi中TWebBrowser中注入Js
最近帮朋友做一个软件,其中要自动化某网页中的操作,最简的操作是调用自己写的代码. 代码如下: procedure TForm1.Button2Click(Sender: TObject);var i ...
- git创建标签
创建标签 在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * dev master $ git checkout master Switched to branc ...
- [Leetcode][Python]23: Merge k Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 23: Merge k Sorted Listshttps://oj.leet ...
- 修改spinner选中以后显示的字体颜色
原来spinner选中以后显示的view 还是textview ,这样就是可以设置它的字体颜色了 sp.setOnItemSelectedListener(new OnItemSelectedLi ...
- The Water Problem(排序)
The Water Problem Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- HTML5中video的使用一
<!DOCTYPE html> <html> <head> <title>HTML5 </title> <meta http-equi ...
- iOS 使用UILocalizedIndexedCollation实现区域索引标题(Section Indexed Title)即拼音排序
UITableView在行数相当多的时候,给人的感觉是非常笨重的.通常为了方便用户使用,采用的方法有:搜索框.按层级展示.区域索引标题. 前两种就不用介绍了,此文就介绍区域索引标题的实现. 区域索引标 ...
- Java 中的resultset详解
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...
- 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X
题目:给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X 思路一: 1,先采用归并排序对这个数组排序, 2,然后寻找相邻<k,i>的两数之和sum,找到恰好sum>x的 ...
- input 输入验证
js验证输入框内容 只能输入英文 只能输入英文 无法粘贴,右键不会弹出粘贴菜单 只能输入数字: 只能输入数字,小数点: 只能输入数字,小数点,下划线: 只能输入英文和数字: 只能输入汉字: 禁止输入法 ...