//
// Phone.h
// day13 #import <Foundation/Foundation.h> // 被继承的这个类我们称之为父类/ 超类
@interface Phone : NSObject
{
int _cpu;
}
// 打电话
- (void)signalWithNumber:(NSString *)number;
// 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
+ (void)brand;
@end
//
// Phone.m
// day13 #import "Phone.h" @implementation Phone - (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用手机打电话给%@,,,%i", number,self->_cpu);
} - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用手机发短信给%@, 内容是%@,,,,%i", number, content,_cpu);
} + (void)brand
{
NSLog(@"品牌");
}
@end
//
// Android.h
// day13 #import <Foundation/Foundation.h>
#import "Phone.h" // 继承了某个类的类我们称之为子类
@interface Android : Phone
- (void)setCpu:(int)cpu;
- (int)cpu;
@end
//
// Android.m
// day13 #import "Android.h" @implementation Android
- (void)setCpu:(int)cpu
{
_cpu = cpu;
}
- (int)cpu
{
return _cpu;
}
@end
//
// Iphone.h
// day13 #import <Foundation/Foundation.h>
#import "Phone.h" // 其实在类名的后面加上: NSObject, 就是让当前类继承NSObject类
// new方法就是继承过来的
// isa指针
// 继承的语法 @interface 类名 : 需要继承的类 //@interface Iphone : NSObject
@interface Iphone : Phone
{
//int _cpu;
int _cpu1; //不能跟父类属性同名
} // 打电话
- (void)signalWithNumber:(NSString *)number; // 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content; - (void)setCpu:(int)cpu;
- (int)cpu;
@end
//
// Iphone.m
// day13 #import "Iphone.h" @implementation Iphone - (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用iPhone手机打电话给%@", number);
} - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用iPhone手机发短信给%@, 内容是%@", number, content);
} - (void)setCpu:(int)cpu
{
_cpu = cpu;
} - (int)cpu
{
return _cpu;
}
@end
//
// main.m
// 继承基本概念 #import <Foundation/Foundation.h>
#import "Iphone.h"
#import "Android.h" int main(int argc, const char * argv[]) { /*
当前代码存在的问题: 重复代码太多
可以利用继承来解决当前重复代码太多的问题
只要A类继承了B类, 那么A类就拥有了B类的所有属性和方法(对象方法和类方法)
*/
Iphone *p = [Iphone new];
[p setCpu:];
[p signalWithNumber:@""];//利用手机打电话给1355443322,,,100 Android *a = [Android new];
[a setCpu:];
[a signalWithNumber:@""];//利用手机打电话给1868686886,,,10000 [Iphone brand];
[Android brand]; [p setCpu:];
NSLog(@"cpu = %i", [p cpu]);
return ;
}

oc19--继承1的更多相关文章

  1. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  2. JavaScript的继承实现方式

    1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...

  3. javascript中的继承与深度拷贝

    前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...

  4. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. JS继承类相关试题

    题目一: //有关于原型继承的代码如下:function Person(name) {   this.name = name;}Person.prototype = {     getName : f ...

  6. JS继承之寄生类继承

    原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...

  7. JS继承之借用构造函数继承和组合继承

    根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...

  8. JS继承之原型继承

     许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...

  9. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

  10. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

随机推荐

  1. sql 添加列并设置默认值

    ALTER TABLE tablsename ADD fieldname BIT NULL DEFAULT

  2. mysql自动添加时间的方法

    时间添加方法,可以在编辑数据时方便时间选择输入: 将时间列DataType设为timestamp,设定其默认值为CURRENT_TIMESTAMP. 这样每次插入一条新纪录,数据库会自动在时间段存储当 ...

  3. 蘑菇街TeamTalk应用安卓源码

    该源码是蘑菇街TeamTalk应用源码,该产品目标用户为中小型企业用户,支持单聊和群聊,提供文字.表情和图片的富文本实时聊天功能 详细说明:http://android.662p.com/thread ...

  4. mysql手册操作

    1.show table status   显示表状态 2.VERSION()   版本:CURRENT_DATE   当前日期: NOW()   当前时间:USER   当前用户 3.GRANT A ...

  5. [Advanced Algorithm] - Validate US Telephone Numbers

    题目 如果传入字符串是一个有效的美国电话号码,则返回 true. 用户可以在表单中填入一个任意有效美国电话号码. 下面是一些有效号码的例子(还有下面测试时用到的一些变体写法): 555-555-555 ...

  6. 数据迁移 Migration

  7. 从输入url到页面展示出来经历了哪些过程

    本文只是一个整理向的随笔,以个人思路来简化的同时进行适当的拓展,如有错误,欢迎指正. 1.输入网址.  此时得到一个url 2.域名解析 整个过程都是dns系统在发挥作用,它的目的是将域名和ip对应起 ...

  8. <meta http-equiv="refresh" content="3"> 什么意思?

    <meta http-equiv="refresh" content="3"> 什么意思?平常都是<meta http-equiv=" ...

  9. python学习笔记之小小购物车

    #coding=utf-8 ''' Created on 2015-6-18 @author: 悦文 ''' def goods_list(): shangpin={"} print &qu ...

  10. ext4的一些特性

    delalloc介绍 delalloc是ext4下的一个新特性,延迟分配技术Delay Allocation. 实现原理为: Buffer Write时数据会被保存到page cache中,但是系统并 ...