`
dcj3sjt126com
  • 浏览: 1872518 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多态和动态绑定、多态和异常

    博客分类:
  • IOS
阅读更多
@interface Car : NSObject
{
    @protected
    int cID;    //id
    @public
    NSString *name;     //名称
//    @private
    float speed;    //车速
}
- (void) run;
@end

@implementation Car
- (id) init
{
    if (self = [super init]) {
        cID = 1000;
        speed = 120;
        name = @"小汽车";
    }
    return self;
}
- (void) run {
    NSLog(@"start");
}
@end

//新建一个宝马汽车类,让他继承汽车类
@interface Bmw 

@end
@implementation Bmw
- (void) run 
{
    name = @"宝马";
    NSLog(@"car's name is %@", name);
}
@end
在main中测试
Car *car = nil;    //静态类型
car =  [[Car alloc] init];
[car run];

id car2;
car2 = car;

car->name = @"小车";    //公共的实例变量
// car->speed = 100;    //私有实例变量

Bmw *bmw = [[Bmw alloc] init];
[bmw run];

 

if ([audi isKindOfClass:[Car class]]) {
    NSLog(@"audi is a kind of Car");
}

if ([audi isMemberOfClass:[Car class]]) {
    NSLog(@"audi is a memberof Car");
}

if ([car isMemberOfClass:[Car class]]) {
    NSLog(@"car is a memberof Car");
}

//对象是否响应@selector指定的方法
if ([car RespondsToSelector:@selector:(run)]) {
    NSLog(@"car responds to run method");
}

SEL action;
action = @selector(run);
[car performSelector:action];
//等同于
// [car performSelector:@selector(run)];

//判断某个类是否是该类的子类
if ([Benz isSubClassOfClass:[Car class]]) {
    NSLog(@"benz is subclass of Car");
}

//判断两个对象是否是同一类型
if ( [Audi class] == [Benz class] ) {
    NSLog(@"audi and benz is the same class");
}

//OC的异常处理
@try {
    [car noSuchMethod];
}
@catch (NSException *exception) {
    NSLog(@"catch exception %@ %@",     [exception name], [exception reason] );
//编写代码,记录这个日志
}
@finally {
       //...
}

 

分享到:
评论

相关推荐

    关于继承多态及动态绑定.pdf

    总的来说,继承、多态和动态绑定是C++中实现面向对象编程的关键特性,它们使得代码更加灵活,易于扩展,同时也提供了强大的代码复用机制。通过理解这些概念及其底层实现,可以更好地设计和实现复杂的软件系统。

    iPhone编程的多态、动态类型和动态绑定

    在iOS开发中,尤其是使用Objective-C或Swift进行iPhone编程时,多态(Polymorphism)、动态类型(Dynamic Typing)和动态绑定(Dynamic Binding)是三个核心概念,它们构成了面向对象编程的重要基石。理解并熟练运用...

    Objective-C-2.0程序设计-第9章-多态、动态类型和动态绑定PPT课件.ppt

    虽然Objective-C不鼓励频繁抛出异常,但在处理多态和动态绑定时,异常处理仍是一个重要的安全机制。 9.6 更深入的内容 本章可能还涵盖了更多关于Objective-C 2.0中多态、动态类型和动态绑定的高级话题,如Category...

    Java多态中动态绑定原理解析

    Java多态中动态绑定原理解析是Java面向对象程序设计中非常重要的特性,它让程序拥有更好的可读性和可扩展性。在Java中,多态是发生在继承关系中的,需要子类重写父类的方法。父类类型的引用指向子类类型的对象。动态...

    ObjectiveC程序设计多态动态类型和动态绑定PPT教案学习.pptx

    在Objective-C中,多态(Polymorphism)、动态类型(Dynamic Typing)和动态绑定(Dynamic Binding)是核心概念,它们是实现面向对象程序设计灵活性和可扩展性的关键。 9.1 多态(相同的名称,不同的类) 多态是指...

    浅谈Java中的重载,重写,多态,静态绑定、动态绑定

    Java中的重载、重写、多态、静态绑定和动态绑定的知识点总结 Java 中的重载(Overload)是一种机制,允许在同一个类中定义多个具有相同名称的方法,这些方法的参数个数、参数类型和顺序不能相同。返回类型可以相同...

    java的编译时多态和运行时多态

    运行时多态是指在运行时根据对象的实际类型来调用相应的方法,这种机制称为动态绑定。在 Java 中,运行时多态是通过虚拟方法表(Virtual Method Table,VMT)来实现的。 在 Java 中,每个对象都有一个虚拟方法表,...

    Java多态中的动态绑定与静态绑定

    大家可能都知道Java面向对象的三大特性,封装,继承,多态,其中动态绑定就与多态有关,那什么是动态绑定呢? 1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体对象的类型进行绑定,或者说是...

    java继承和多态PPT教案学习.pptx

    本PPT教案主要讲解了Java中的继承和多态机制,包括继承、里式代换原则、多态和动态绑定、方法重载、重载构造函数和方法覆盖等概念。 继承是面向对象编程的基本机制之一,允许一个类继承另一个类的成员变量和方法。...

    编程技能训练与等级考试辅导:多态、动态绑定.pptx

    多态和动态绑定是面向对象程序设计中的核心概念,它们在Java等面向对象语言中扮演着至关重要的角色。多态性允许我们使用一个父类类型的引用来操作子类对象,从而实现更灵活的代码设计和复用。动态绑定则是多态实现的...

    C++和Java多态的区别

    - **方法调用指令**:JVM提供了四种方法调用指令,分别为`invokestatic`(静态绑定)、`invokespecial`(用于私有方法、构造函数和父类方法)、`invokevirtual`(动态绑定)和`invokeinterface`(接口方法调用)。...

    多态PPT文件!!!!

    - 继承:子类继承父类的属性和方法,子类可以看作是父类的一个扩展,这样父类引用可以指向子类对象,实现动态绑定。 - 虚函数:在基类中声明为虚函数的方法,可以在派生类中被重写,使得调用时根据实际的对象类型...

    多态代码实例

    在面向对象编程中,多态分为静态多态(编译时多态)和动态多态(运行时多态)。静态多态主要通过函数重载和运算符重载实现,而动态多态则主要依赖于虚函数。 虚函数是在基类中声明的,并且被派生类重写的成员函数。...

    1.继承的本质和原理 2.派生类的构造类型 3.重载、覆盖、隐藏 4.静态绑定和动态绑定 5.多态 vfptr和vftbale

    1.继承的本质和原理 2.派生类的构造类型 ...4.静态绑定和动态绑定 5.多态 vfptr和vftbale 6.抽象类的设计原理 7.多继承以及问题 8.虚基类 vbptr和vbtable 9.RTTI 10.C++四种类型强转 11.继承多态常见笔试面试题分享

    一个HW 多态题目 一个HW 多态题目

    当基类指针或引用指向派生类的对象时,调用虚函数会根据实际的对象类型来执行相应的函数实现,这就是动态绑定或运行时多态。在Java中,多态则是通过接口和继承来实现的,由于所有方法都是虚拟的,所以多态性在Java中...

    关于继承多态集合和IO的一个例子

    **多态**是面向对象的另一大特性,分为静态绑定(编译时多态)和动态绑定(运行时多态)。静态绑定是通过方法重载实现,即在同一个类中用相同的名字但参数不同的方法。动态绑定则是通过方法重写,子类继承父类后可以...

    java中多态的内存分析

    多态性分为编译时多态和运行时多态,其中运行时多态是Java中最常见的形式,也称为动态绑定。在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时...

    原来多态还可以这样

    这主要体现在两个方面:静态多态(编译时多态)和动态多态(运行时多态)。静态多态通常通过函数重载或运算符重载实现,而动态多态则依赖于接口、继承和虚函数等机制。 1. 静态多态:在编译期间就能确定调用哪个...

    实验七运行中的多态和虚函数

    - C++中通过虚表(vtable)和虚指针(vptr)实现动态绑定,即在运行时确定调用哪个版本的函数。 4. **虚函数表的工作原理**: - 每个包含虚函数的类都会有一个虚函数表,其中存储了所有虚函数的地址。 - 对象中包含一...

Global site tag (gtag.js) - Google Analytics