动态类型和静态类型

本文详细解释了动态类型和静态类型的概念,以及它们在程序设计中的应用。文章探讨了多态性和不同类型的优缺点,并举例说明了如何在实际编程中区分使用这两种类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态类型和静态类型 

1、动态类型&静态类型

多态:允许不同的类定义相同的方法。
动态类型:程序直到执行时才能确定所属的类。
静态类型:将一个变量定义为特定类的对象时,使用的是静态形态。

将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就知道这个变量所属 的类,这个变量总是存储特定类的对象。使用静态类型时,编译器尽可能的确保变量的用法在程 序中始终保持一直,编译器能够通过检查来确定应用于对象的方法是由该类定义的或者由该类继 承的,否则就会显示警告。静态类型能够更好的在程序编译阶段就指出错误。并且使用静态类型 可以?高程序的可读性。 

2、为什么要有动态类型? 

多态的出现时为了让不同的类能使用同名的方法。这会让程序的可读性大大?高,也降低了编程 难度。

编译时和运行时检查

因为存储在id变量中的对象类型在编译的时候是无法确定的,所以一些事情是需要在运行时才能 够确定。 例如:类Dog只有一个run方法,而类Cat只有一个jump方法,那么下面这段代码在编译的时候就是 会出错 

Dog *dog = [[Dog alloc] init]; 

[dog jump]; 

因为编译器知道dogDog类的一个对象,而当遇到[dog jump]消息的时候,编译器同样知道Dog类 是没有jump方法的,所以在编译阶段就会?出警告。但是如果将代码换成下面的样子在编译阶段 就不会出错 

Animal *cat= [[Animal alloc] init];

[(Cat*)cat jump]; 

因为在编译阶段编译器并不知道cat中存储的对象的类型是什么,所以在运行的时候程序就会crash 





转载于:https://my.oschina.net/TaciturnKnightYQ/blog/537202

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值