`
473687880
  • 浏览: 535636 次
文章分类
社区版块
存档分类
最新评论

object-c之继承

 
阅读更多

跟Java一样,只支持单继承,多继承需要用portocol。

#import <Foundation/Foundation.h> 
@interface MyRectangle: NSObject{ 
    int width; 
    int height; 
} 
-(MyRectangle*) initWithWidth: (int) weight andHeight: (int) height; 
-(void) setWidth: (int) width; 
-(void) setHeight: (int) height; 
-(int) width; 
-(int) height; 
-(void) area;//计算面积
@end 

#import "MyRectangle.h" 
@implementation MyRectangle 
-(MyRectangle*) initWithWidth: (int) w andHeight: (int) h{ 
    self=[super init]; 
    if(self){ 
        [self setWidth: w]; 
        [self setHeight: h]; 
    } 
} 
-(void) setWidth: (int) w{ 
    width=w; 
} 
-(void) setHeight: (int) h{ 
    height=h; 
} 
-(int) width{ 
    return width; 
} 
-(int) height{  
return height; 
} 
-(void) area{ 
    printf("%d\n",width*height); 
} 
@end 

#import "MyRectangle.h"

@interface MySquare:MyRectangle{
int size;
}
-(MySquare*)initWithSize:(int)size;
-(void)setSize:(int)size;
-(int)size;
@end

#import "MySquare.h"

@implementation MySquare
-(MySquare*)initWithSize:(int)s{
self=[super init];
if(self){
[self setWidth:s];
[self setHeight:s];
}
return self;
}

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

-(int)size{
return size;
}
@end

#import "MySquare.h"

int main(int argc,const char *argv[]){
MyRectangle *rec=[[MySquare alloc]initWithSize:10];
[rec area];
[rec release];
return 0;
}

好了,经常make后无问题。

然后继续测试isMemberOfClass

#import "MySquare.h"

int main(int argc,const char *argv[]){
MyRectangle *rec=[[MySquare alloc]initWithSize:10];

if([rec isMemberOfClass:[MyRectangle class]]){
NSLog(@"rec isMemberofClass of MyRectangle.\n");
}
else{
NSLog(@"rec is not MemberofClass of MyRectangle.\n");
}

if([rec isMemberOfClass:[MySquare class]]){
NSLog(@"rec isMemberofClass of MySquare.\n");
}
else{
NSLog(@"rec is not MemberofClass of MySquare.\n");
}

[rec release];
return 0;
}

从结果看出,编译器不认为

rec
是MyRectangle而是MySquare。

分享到:
评论

相关推荐

    Object-C基础教程

    Object-C的核心特性之一是其消息传递机制。通过`[receiver message]`语法向对象发送消息,如`[myObject sayHello];`。如果接收者能够响应该消息,就会执行对应的方法。若无法响应,程序会抛出一个未找到方法的异常。...

    Object-C语言教程.docx

    - Object-C是一种基于C语言的面向对象编程语言。 - 它的主要特点包括面向对象、动态性、扩展性、自动垃圾回收机制、C语言兼容性以及静态类型检查等。 - 在动态性方面,它允许在运行时修改类、对象的结构和行为,...

    Object-C语言教程

    Object-C,全称Objective-C,是一种基于C语言的面向对象编程语言,主要用于Apple的iOS和macOS平台开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,使得对象间的交互更加灵活。本教程将深入探讨Object-C...

    Object-Oriented Programming with Object-C

    Objective-C是苹果公司为其Mac操作系统开发的应用程序编程语言,后来成为iOS应用程序开发的主流语言之一。它在C语言基础上增加了Smalltalk风格的消息传递机制,非常适合面向对象的设计。 面向对象编程(Object-...

    Object-C语言教程0220.zip

    Object-C是一种基于C语言的面向对象编程语言,主要在苹果的iOS和macOS平台上使用。本教程0220.zip包含了一份关于Object-C语言的详细教学资料,旨在帮助初学者和有经验的开发者深入理解其核心概念和特性。 1. **类与...

    object-c基础教程

    - **定义**: Object-C是一种通用、面向对象的编程语言,基于C语言并扩展了许多面向对象的特性。 - **应用场景**: 主要用于开发iOS和macOS应用。 - **特点**: - 继承自C语言,具有C的所有特性。 - 引入了面向对象的...

    iPhone笔记-Object-c基础

    例如:`@interface class-name : NSObject`,其中`NSObject`是类的父类,大部分Object-c类都继承自它。`NSObject`提供了基本的内存管理、初始化和类型操作。 - 类的定义通常在对应的`.m`文件中完成,使用`@...

    Object-C语言教程&案例&相关项目资源.zip

    Object-C的基础是C语言,这意味着它继承了C的所有语法特性,如变量声明、函数定义、控制结构等。此外,它还引入了以下关键概念: - **消息传递**:Object-C中的对象通过发送消息来交互,而不是调用方法。当你在...

    Object-C语言教程&案例&相关项目资源

    - **类别**可以为已存在的类添加方法,无需继承,是Object-C的一个独特特性,常用于扩展系统类的功能。 3. **协议(Protocol)** - **协议**类似于Java或C#的接口,定义了一组可选或必需的方法,可以被多个类...

    Object-b资源:利用Object-C语言编写的计数程序

    Objective-C是C语言的一个扩展,它添加了面向对象编程的概念,如类、继承、多态和消息传递。计数程序可能涉及到基本的变量、循环和条件语句等核心概念。在Objective-C中,计数通常会用到`int`或`NSInteger`类型来...

    《Object-Oriented Programming with Object C》 英文高清原版 PDF

    《Object-Oriented Programming with Object C》是一本深入探讨面向对象编程(OOP)与Objective-C语言的专业书籍。Objective-C是Apple开发的一种强大的、面向对象的编程语言,主要用于iOS和macOS的应用程序开发。这...

    Object-C/Swift官网文档

    Object-C,作为苹果早期的开发语言,是基于C语言并扩展了Smalltalk式的消息传递机制。它的主要知识点包括: 1. **消息传递**:这是Object-C的核心特性,通过消息传递实现对象间的通信,如`[receiver method]`语法。...

    Object-C语言教程0220.zip基础知识及相关案例

    《Objective-C语言教程0220.zip》是一个包含Objective-C编程基础及实例的课程资源包。...通过学习和实践,你将能够熟练地使用Objective-C进行iOS和macOS应用的开发,从而开启你的苹果平台开发之旅。

    Object-C语言案例.zip

    Objective-C是C语言的一个超集,它扩展了C语言以支持面向对象的特性,如类、继承、多态和消息传递等。 【描述】"Object-C语言案例" 提供了一系列示例代码和项目,帮助开发者深入理解Objective-C的语法和实践。这些...

    EventBusObject-CVersion(EventBus的Object-C语言版本).zip

    这个压缩包“EventBusObject-CVersion(EventBus的Object-C语言版本).zip”包含了XEBEventBus-master项目,这是一个Objective-C实现的EventBus库。下面我们将深入探讨EventBus的基本概念、Object-C版本的特点以及如何...

    Object-C demos

    在这个名为 "Object-C demos" 的压缩包中,我们很显然会发现一系列与 Objective-C 编程相关的示例代码。这些代码可能是开发者在阅读相关书籍后,根据书中的指导亲自编写的,并且进行了适当的修改以适应自己的理解和...

    基于IOS平台(object-c)的游戏五子棋程序设计

    1. **Objective-C语言基础**:Object-C是C语言的超集,它添加了面向对象的特性,如消息传递、类和协议等。在五子棋项目中,你需要理解类的定义、对象的创建、继承、多态以及消息传递机制。 2. **MVC设计模式**:在...

    Object-C语言,用C语言实现面向对象

    Object-C,全称Objective-C,是一种基于C语言的、面向对象的编程语言,由Stepanov和Moss在1983年为NextStep操作系统开发。苹果公司广泛使用Objective-C作为其iOS和macOS操作系统以及相关框架如Foundation和AppKit的...

Global site tag (gtag.js) - Google Analytics