跟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的核心特性之一是其消息传递机制。通过`[receiver message]`语法向对象发送消息,如`[myObject sayHello];`。如果接收者能够响应该消息,就会执行对应的方法。若无法响应,程序会抛出一个未找到方法的异常。...
- Object-C是一种基于C语言的面向对象编程语言。 - 它的主要特点包括面向对象、动态性、扩展性、自动垃圾回收机制、C语言兼容性以及静态类型检查等。 - 在动态性方面,它允许在运行时修改类、对象的结构和行为,...
Object-C,全称Objective-C,是一种基于C语言的面向对象编程语言,主要用于Apple的iOS和macOS平台开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,使得对象间的交互更加灵活。本教程将深入探讨Object-C...
Objective-C是苹果公司为其Mac操作系统开发的应用程序编程语言,后来成为iOS应用程序开发的主流语言之一。它在C语言基础上增加了Smalltalk风格的消息传递机制,非常适合面向对象的设计。 面向对象编程(Object-...
Object-C是一种基于C语言的面向对象编程语言,主要在苹果的iOS和macOS平台上使用。本教程0220.zip包含了一份关于Object-C语言的详细教学资料,旨在帮助初学者和有经验的开发者深入理解其核心概念和特性。 1. **类与...
- **定义**: Object-C是一种通用、面向对象的编程语言,基于C语言并扩展了许多面向对象的特性。 - **应用场景**: 主要用于开发iOS和macOS应用。 - **特点**: - 继承自C语言,具有C的所有特性。 - 引入了面向对象的...
例如:`@interface class-name : NSObject`,其中`NSObject`是类的父类,大部分Object-c类都继承自它。`NSObject`提供了基本的内存管理、初始化和类型操作。 - 类的定义通常在对应的`.m`文件中完成,使用`@...
Object-C的基础是C语言,这意味着它继承了C的所有语法特性,如变量声明、函数定义、控制结构等。此外,它还引入了以下关键概念: - **消息传递**:Object-C中的对象通过发送消息来交互,而不是调用方法。当你在...
- **类别**可以为已存在的类添加方法,无需继承,是Object-C的一个独特特性,常用于扩展系统类的功能。 3. **协议(Protocol)** - **协议**类似于Java或C#的接口,定义了一组可选或必需的方法,可以被多个类...
Objective-C是C语言的一个扩展,它添加了面向对象编程的概念,如类、继承、多态和消息传递。计数程序可能涉及到基本的变量、循环和条件语句等核心概念。在Objective-C中,计数通常会用到`int`或`NSInteger`类型来...
《Object-Oriented Programming with Object C》是一本深入探讨面向对象编程(OOP)与Objective-C语言的专业书籍。Objective-C是Apple开发的一种强大的、面向对象的编程语言,主要用于iOS和macOS的应用程序开发。这...
Object-C,作为苹果早期的开发语言,是基于C语言并扩展了Smalltalk式的消息传递机制。它的主要知识点包括: 1. **消息传递**:这是Object-C的核心特性,通过消息传递实现对象间的通信,如`[receiver method]`语法。...
《Objective-C语言教程0220.zip》是一个包含Objective-C编程基础及实例的课程资源包。...通过学习和实践,你将能够熟练地使用Objective-C进行iOS和macOS应用的开发,从而开启你的苹果平台开发之旅。
Objective-C是C语言的一个超集,它扩展了C语言以支持面向对象的特性,如类、继承、多态和消息传递等。 【描述】"Object-C语言案例" 提供了一系列示例代码和项目,帮助开发者深入理解Objective-C的语法和实践。这些...
这个压缩包“EventBusObject-CVersion(EventBus的Object-C语言版本).zip”包含了XEBEventBus-master项目,这是一个Objective-C实现的EventBus库。下面我们将深入探讨EventBus的基本概念、Object-C版本的特点以及如何...
在这个名为 "Object-C demos" 的压缩包中,我们很显然会发现一系列与 Objective-C 编程相关的示例代码。这些代码可能是开发者在阅读相关书籍后,根据书中的指导亲自编写的,并且进行了适当的修改以适应自己的理解和...
1. **Objective-C语言基础**:Object-C是C语言的超集,它添加了面向对象的特性,如消息传递、类和协议等。在五子棋项目中,你需要理解类的定义、对象的创建、继承、多态以及消息传递机制。 2. **MVC设计模式**:在...
Object-C,全称Objective-C,是一种基于C语言的、面向对象的编程语言,由Stepanov和Moss在1983年为NextStep操作系统开发。苹果公司广泛使用Objective-C作为其iOS和macOS操作系统以及相关框架如Foundation和AppKit的...