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方法。
十分钟搞定! DeepSeek本地部署详细指南! 保姆级教程,三步搞定deepseek本地部署,不求人! 阅读详情

相关推荐

Oracle数据库安装及配置(Oracle19c)

Windows 10安装Oracle 19c教程

weixin_69200200的博客 2万+

Objective-C类的继承

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

m0_52192682的博客 1295

学术类PPT制作总结

本文分享了科技类PPT的制作技巧,希望相关的信息能帮助到读者。

奇妙水果的技术博客,欢迎交流技术~ 2881

OC继承

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

FIZZ_CHIANG的专栏 857

英飞凌AURIX 2G 系列MCU关于外设模块EVADC的实现原理及对应MCAL(EB Tresos)配置项详细讲解

本文章讲述了英飞凌AURIX 2G系列MCU关于外设模块EVADC的实现原理及对应MCAL配置工具(EB)的配置项。

weixin_46176506的博客 6274

零基础玩转NILM:用nilmtk提取UKDALE电器数据的保姆级教程

本文为零基础用户提供了一份详细的NILM入门指南,重点讲解如何使用nilmtk工具包从UKDALE数据集中提取电器级用电数据。教程涵盖环境搭建、核心概念解析、数据提取实战及常见问题排查,帮助读者快速掌握非侵入式负荷监测的数据预处理关键步骤。

rgv234567的博客 499

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

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

zhongnanshan_001的博客 2014

ESP32驱动GC9A01圆形屏实战:Arduino平台LVGL移植与图像显示优化

本文详细介绍了在Arduino平台上使用ESP32驱动GC9A01圆形屏的实战指南,包括硬件连接、LVGL移植与图像显示优化。通过SPI配置、LVGL库安装和双缓冲机制等技巧,帮助开发者快速实现高效显示效果,适用于智能家居控制面板等应用场景。

weixin_29182481的博客 734

Objective-C之继承

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

Null959_的博客 513

帆软报表开发-快速入门

数据可视化展示功能特点如下:选择权限管理 > 用户最终权限 > 汤姆(Tom) > 选择图表设计入门 > 打开查看权限。

郭宝的博客 5968

DirectX function “GetDeviceRemovedReason“ failed with DXGI_ERROR_DEVICE_HUNG (“The GPU will not resp

游戏报错"DXGI_ERROR_DEVICE_HUNG"的解决方案 在使用RTX 40系显卡运行FIFA 23等游戏时,可能出现DirectX报错导致游戏崩溃。这主要由于最新显卡驱动与DirectX 12的兼容性问题。解决方法包括: 降级显卡驱动版本 修改游戏配置文件,将DIRECTX_SELECT设为1 在显卡控制面板中关闭垂直同步、抗锯齿、DLSS 3等功能 调整电源模式为性能优先 这些操作可以有效解决因驱动兼容性导致的游戏崩溃问题。

猿小白的博客 3888

Objective-C继承

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

码出精彩 487

Transformer模型详解

​本文主要介绍Transformer系列,从基础到理论,对注意力机制进行总结并解释《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全attention的结构代替了lstm,抛弃了之前传统的encoder-decoder模型必须结合cnn或者rnn的固有模式,只用attention。文章的主要目的是在减少计算量和提高并行效率的同时不损害最终的实验结果。

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 5286

Object C 继承

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

Focus Now 1225

VC中sqlite的使用

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

object-c之继承

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

boyhailong的专栏 1153

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

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

Object-C之继承

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

小卓子 681

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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、付费专栏及课程。

余额充值