object-c的继承

object c中关于继承代码示例 object c中关于继承代码示例,代码 立即下载
作为面向对象的编程语言,object-c当然也支持继承,而且和java一样,支持的是单一继承,即只有一个超类。
当然,也支持覆盖(或重写)父类的同名方法。例子如下:


 1. 代码:
 
//1. MyRectangle.h
#import <Foundation/NSObject.h>


@interface MyRectangle: NSObject {
    int width;
    int height;
}


-(MyRectangle*) initWithWidth: (int) w height: (int) h;
-(void) setWidth: (int) w;
-(void) setHeight: (int) h;
-(void) setWidth: (int) w height: (int) h;
-(int) width;
-(int) height;
-(void) print;
@end

//2. MyRectangle.m

#import "MyRectangle.h"
#import <stdio.h>

@implementation MyRectangle
-(MyRectangle*) initWithWidth: (int) w height: (int) h {
    self = [super init];


    if ( self ) {
        [self setWidth: w height: h];
    }


    return self;
}


-(void) setWidth: (int) w {
    width = w;
}


-(void) setHeight: (int) h {
    height = h;
}


-(void) setWidth: (int) w height: (int) h {
    width = w;
    height = h;
}


-(int) width {
    return width;
}


-(int) height {
    return  height;
}


-(void) print {
    printf( "width = %i, height = %i", width, height );
}
@end


//3. Square.h
#import "MyRectangle.h"


@interface Square: MyRectangle
-(Square*) initWithSize: (int) s;
-(void) setSize: (int) s;
-(int) size;
@end




//4. Square.m
#import "Square.h"


@implementation Square
-(Square*) initWithSize: (int) s {
    self = [super init];


    if ( self ) {
        [self setSize: s];
    }


    return self;
}


-(void) setSize: (int) s {
    width = s;
    height = s;
}


-(int) size {
    return width;
}


-(void) setWidth: (int) w {
    [self setSize: w];
}


-(void) setHeight: (int) h {
    [self setSize: h];
}
@end




//5. main.m
#import "Square.h"
#import "MyRectangle.h"
#import <stdio.h>


int main( int argc, const char *argv[] ) {
    MyRectangle *rec = [[MyRectangle alloc] initWithWidth: 10 height: 20];
    Square *sq = [[Square alloc] initWithSize: 15];


    // print em
    printf( "MyRectangle: " );
    [rec print];
    printf( "\n" );


    printf( "Square: " );
    [sq print];
    printf( "\n" );


    // update square
    [sq setWidth: 20];
    printf( "Square after change: " );
    [sq print];
    printf( "\n" );


    //调用继承自父类的width和height
    printf( "Square after width: %i\n", [sq width] );
    printf( "Square after height: %i", [sq height] );
    // free memory
    [rec release];
    [sq release];
    
    return 0;
}


2. 编译运行:
gcc -fconstant-string-class=NSConstantString -c main.m -I /GNUstep/System/Library/Headers
gcc -c MyRectangle.m -I /GNUstep/System/Library/Headers
gcc -c Square.m -I /GNUstep/System/Library/Headers
gcc main.o Square.o MyRectangle.o -o main -L /GNUstep/System/Library/Libraries/ -lobjc -lgnustep-base

$ ./main.exe
MyRectangle: width = 10, height = 20
Square: width = 15, height = 15
Square after change: width = 20, height = 20

Square after width: 20Square after height: 20


3. 说明:
   (1) Square继承自MyRectangle,重写了setWidth和setHeight方法;
   (2) Square可以调用继承自父类MyRectangle的width和height方法。
从零到一:用Verilog和Quartus构建智能交通灯系统的实战指南 本文详细介绍了如何使用Verilog和Quartus Prime从零开始构建智能交通灯系统。通过分步指导,包括状态机设计、时序控制、数码管显示等核心模块实现,并结合ModelSim仿真验证,帮助FPGA初学者掌握数字电路设计的关键技术。文章还提供了实际部署到FPGA开发板的调试技巧和进阶优化方案。 阅读详情

相关推荐

Lmbench测试集 --- 延迟测试工具lat_mem_rd

lmbench测试集简介 以及 lat_mem_rd延迟测试工具: 如何测试、测试结果、源码分析

MonologueYY的博客 1万+

Objective-C类的继承

一、类的继承 继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Objective-C的继承具有单继承的特点,每个子类只有一个直接父类。 (1)继承的特点 Objective-C的继承通过“:父类”语法来实现,实现继承的子类被称为子类,被继承的类被称为父类,也称其为基类、超类。父类和子类的关系是一种“一般和特殊”的关系。例如,水果和苹果的关系,苹果继承了水果,苹果是水果的子类,苹果是一种特殊的水果。 因为子类是一种特殊的父类,因此,父类包含的范围总比子类包含的范围要大,所以可以认为父类是大类,而子类

m0_52192682的博客 1295

别再只飞不记了!用CsvView分析你的大疆飞行日志,优化航拍与排查炸机原因

本文详细介绍了如何利用CsvView工具分析大疆无人机的飞行日志,帮助用户优化航拍效率和飞行安全。通过解读飞行日志中的关键数据,如电池性能、飞行轨迹等,用户可以及时发现潜在问题并改进飞行习惯。文章还提供了事故排查方法和进阶分析技巧,适合无人机爱好者和专业飞手。

weixin_42535461的博客 548

OC继承

继承  继承的思想:当多个类出现部分相同的实例变量和方法时,就考虑用继承 继承的使用:将多个类中相同的实例变量的方法提出来写成一个公共的父类. 继承方法 1.保留父类 对该方法的实现,(不用重写)2.案子类重写之后的方式来实现,(重写,忽视父类的实现)3.既有父类对该方法的实现,又有子类对该方法的实现. 继承的上层: 父类 ,继承的下层:子类 继承是单向的,不能相互继承。 继

FIZZ_CHIANG的专栏 857

告别零散脚本:用Playwright+Pytest+Yaml+Allure搭建可维护的UI自动化项目

UI自动化测试是软件质量保障的关键环节,其核心在于模拟用户操作,对Web应用界面进行功能验证。传统的脚本堆砌方式常因代码耦合度高、维护成本大而难以为继。工程化解决方案通过分离关注点,将测试逻辑、数据和配置解耦,从而显著提升项目的可读性、可维护性和可扩展性。其技术价值在于构建可持续运行的自动化资产,而非一次性脚本。典型的应用场景包括Web应用的回归测试、兼容性测试及CI/CD流水线中的质量门禁。本文以Playwright、Pytest、Yaml和Allure为核心技术栈,详细阐述了如何从项目架构、页面对象模型

weixin_42529328的博客 299

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

funfan的博客 5197

Object-C 类的继承和初始化方法

面向对象编程的第一个特点: 继承。继承在项目中由什么作用:减少重复代码的书写,增加其它特有的功能。比如下图:或者动物类又分:猫科动物和犬科动画等等。猫科里面又分狸花猫、布尔猫、星罗猫等。犬科里面有分:藏獒、黑背、田园犬等。继承的关系:1、继承的上层是:父类,继承的下层是:子类。                  2、继承是单向的,不能相互继承。                  3、继承具有传递想...

zhongnanshan_001的博客 2014

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1092

Objective-C之继承

一概述:                 富二代继承了父母,自然就拥有了父母拥有的所有资源。                子类继承了父类同样就拥有了父类所有的方法和属性(成员变量)。                 在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类。      继承的好处:    (1)抽取出了重复的代码    (2)建立了类和类之间的联系      继承的缺点:     ...

Null959_的博客 513

快速入门必看!RT-DETR手把手训练自己的数据集去跑实验,基于 ultralytics 仓库源码改进,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。

本文介绍了使用Ultralytics框架训练RT-DETR模型的全流程。首先需要创建Python 3.10虚拟环境,安装指定版本的PyTorch和相关依赖包。然后准备数据集,修改配置文件,并详细介绍训练、验证和推理三个核心步骤的代码实现。训练阶段使用RTDETR类加载模型配置,设置训练参数;验证阶段评估模型性能;推理阶段可对图片、视频等进行预测。文中还提供了清华大学镜像源加速下载,以及详细的参数配置说明,帮助用户快速搭建RT-DETR目标检测模型。

Ai缝合怪、助力小伙伴高效发论文 5549

Open3D 计算点云基本特征

在 Open3D 中,可以通过 PCA(主成分分析)来求得点云的特征值和特征向量。然后基于这些特征值,进一步计算各种几何特征,如线性、平面性、球度等。

纵马踏花向自由 1605

Objective-C继承

我们可以通过对父类的继承实现一定的扩展,继承主要有以下几种典型的用法: 1 代码复用。.两个类有部分相同的代码,那相同的部分我们就没必要去复制粘贴,完全就可以把公共的部分放在父类中,子类去继承,只需要实现一次相同的部分即可。 2.创建协议类。父类为子类规定了一些方法,哪怕是空的,但我们可以默认为父类为他的子类创建了一种协议,当不同的类实现同名的方法的时候,程序就可以采用多态的设计。 3.通用

码出精彩 487

下载和运行GitHub上的代码教程总结

从昨天开始就想着从GitHub上下载一个开源的Vue的实战项目,希望能从中学习更多的Vue的实用内容,结果搞了半天好不容易下载了,不知道怎么弄。然而,今天终于成功了,激动地我赶紧来记录一下。 如何从GitHub上下载自己需要的项目: 1.首先,你要有一个自己的GitHub(https://github.com/)的账号。关于如何注册GitHub的账号以及如何获取你的SSH密钥这个问题,请大家参...

不怕万人阻挡,只怕自己投降 29万+

Object C 继承

在OC 中有父类和子类的概念,没有父类(超类->super class)的类位于类层次结构的最顶层,成为根(root)类,OC中可以定义自己的根类,但不建议这么做。定义了一个新类,会从父类继承些属性。比如,父类的非私有变量和方法都会成为新类定义的一部分,子类可以直接访问这些方法和实例变量。 下面举个例子,首先定义一个类ClassA,再定义一个类ClassB: #import //Class

Focus Now 1225

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

object-c之继承

跟Java一样,只支持单继承,多继承需要用portocol。 #import @interface MyRectangle: NSObject{ int width; int height; } -(MyRectangle*) initWithWidth: (int) weight andHeight: (int) height; -(void) setWidt

boyhailong的专栏 1153

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Object-C之继承

直接来代码然后总结 #import @interface FKFruit : NSObject { int _a; // 会被继承 } @property (nonatomic, assign) int a; @end #import "FKFruit.h" @interface FKFruit () { int b; // 不会被继承 } @end @imple

小卓子 681

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Object-c 继承

父类MyRectangle.h #import @interface MyRectangle : NSObject {     int width;     int height; } -(MyRectangle*)initWithWidth:(int)w height:(int)h; -(void)setWidth:(int)w; -(void)se

Werty 825

Object-C封装,继承,多态

面向对象的三大特点封装、继承、多态 封装:隐藏内部实现,稳定外部接口.      封装的实现:  属性:封装了实例变量  方法:封装了具体的实现代码  类:封装了属性和方法 封装的好处: 使用更加的简单 ,变量更加安全,可以隐藏内部实现细节,开发速度加快 Object-C中的一个类可以 继承 另一个类 被继承的类成为 超类(sup

ZH151210的专栏 919

object-c中的继承

在面向对象的语言中都会由继承这种语法,而继承我们通常使用is a 来确定继承的关系,在objcet-c中继承是使用冒号来确定继承的,从下面的例子来了解继承:1.创建一个studet的对象------声明#import <Foundation/Foundation.h>//我们创建的类必须继承了NSobject对象@interface student : NSObj...

weixin_34410662的博客 144

object-c中类的继承

子类继承父类 @interface 子类:父类{} @end 子类具有父类的全部成员变量和全部方法。 #import @interface Fruit:NSObject @property (nonatomic,assign) double weight; -(void) info; @end #import "Fruit.h" @implemetation

前人挖坑,后人种(pen) 502

Object C 实现 “多继承”

转自念茜大神博客:http://blog.youkuaiyun.com/yiyaaixuexi/article/details/8970734 Objective-C 的“多继承” 当单继承不够用,很难为问题域建模时,我们通常都会直接想到多继承。多继承是从多余一个直接基类派生类的能力,可以更加直接地为应用程序建模。但是Objective-C不支持多继承,由于消息机制名字查找发生

单线程男孩儿 802

【Object-C】继承,super关键字

Point: 1、Oc 中不支持多继承。动态调用。 2、派生类的数据成员不能和基类重名,若重名,系统将不会定义成功 3、基类的成员函数可以和基类的成员函数重名(作用相当于C++中的虚函数) 4、派生类中若要调用基类中的方法可以用[super  方法名]的方法。 5、Object-C 具有单继承的特点,每个子类只有一个直接的父类 6、子类可以继承到父类的全部成员方法和全部成员变量 7、

Hello World 1324

object-c 学习(继承)

声明一个QYShape 的类 @interface QYShape : NSObject  {    ShapeColor fillColor;   //该类有两个成员变量    ShapeRect bounds; } - (void)setFillColor:(ShapeColor)fillColor; - (void)setBounds:(ShapeRect) bound;  

taitanxiami的专栏 730

Object-C 继承.重写.重载

一.  继承     在面向对象编程中,子类可以通过继承得到父类的可以继承的的属性和方法,在Object C中也同样如此。     先定义一个Person类,并且定义几个属性和一个方法: #import @interface Person : NSObject{ NSString *name; int age; NSArray *itmes; }

执迷的博客 472

初探Object-c 2 :类的继承,重载

在面向对象思想中,继承,重写和重载是非常关键的一个环节,在之前java的学习中,使用继承和重载可以避免在后续的开发中因为之前思考不严谨造成重复开发。在OC的学习中,决定重新温习一遍这种特性。在面向对象中,子类通过继承父类可以获得父类的属性和方法。继承#import <Foundation/Foundation.h>@interface Person : NSObject{ NSString

之行的专栏 473

object-c 继承多态 动态数据类型

在c#中我们知道有继承的。同样在object-c中也有继承。 例如我们写一个人类(父),一个学生类。我们可以这么写: demo: @interface Person:NSobject{ NSString *name; int age; NSDate ...

chizhuan6861的博客 116
上一篇: object-c的id
下一篇: object-c的动态识别与isKindOfClass,isMemberOfClass等
liranke
博客等级 码龄20年 4939粉丝 594原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值