`
noar
  • 浏览: 28153 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[原]静态类型和动态类型

 
阅读更多
概念解释:
1。所谓静态类型:就是在声明时所采用的类型,仅仅是程序文本上表现出来的类型。
2。所谓动态类型:就是将来对象将要表现的的类型,也可以说时运行时表现的类型。

好了,概念已经解释完了。那么这两个概念有什么现实的意义呢?
1。效率:
在效率上静态类型要比动态类型快得多;
2。设计:
在设计时候往往把接口中得对象类型声明为BaseClass类型得指针或引用,但是运行时候该对象有可能是该BaseClass的DerivedClass,这种特性在设计接口时是非常重要的。可以说,正式有了这种特性才能够把“接口”和“实现”解藕。
在设计上另一个突出的应用时FactorClass,大多数实现FactorClass类的时候,都会实现Create函数(或相同语义函数),该函数的返回类型一般都是BaseClass,这样运行时,函数内部返回DerivedClass时候,虽然声明为BaseClass但是真正的类型仍是DerivedClass。

例子:
class Person:{.......};
class Student: Public Person{......};
class Teacher: Public Person{......};

int main(void)
{
Person *pStudent = new Student;
Person *pTeacher = new Teacher;
return 0;
}
这个例子中:pStuent 和 pTeacher的静态类型都是Person,但是它们的动态类型分别是Stuent和Teacher。所以可以看出静态类型仅仅是一种语义上的表示,真正起作用的还是动态类型。
分享到:
评论

相关推荐

    代理设计模式:静态代理和动态代理的理解、实现与区别(优缺点)与SpringAOP的3种配置方式案例工程代码

    本资源主要涵盖了静态代理和动态代理两种常见类型的代理模式,以及Spring AOP中动态代理的三种配置方式。以下是详细的知识点解析: ### 静态代理 静态代理是程序员手动创建代理类并实现相同接口的方式。代理类和...

    Kotlin静态类型共享和重用Kotlin静态类型共享和重用Kotlin静态类型共享和重用

    ### Kotlin静态类型共享和重用 #### Kotlin的特点与优势 1. **现代化语言特性**: - **空安全**:Kotlin通过引入非空类型和可空类型的概念,有效地解决了空指针异常的问题,增强了代码的安全性和稳定性。 - **...

    游戏中的加载静态图片和动态图片,

    在游戏开发中,加载静态和动态图片是至关重要的步骤,因为它们构成了游戏视觉表现的基础。本文将深入探讨如何在游戏中正确地加载和管理这两种类型的图片。 首先,我们要理解静态图片和动态图片的区别。静态图片通常...

    静态代理和动态代理的例子

    代理模式分为静态代理和动态代理两种,这两种代理方式在Java编程中有着广泛的应用。 ## 静态代理 ### 1. 定义 静态代理是在编译时期就已经确定了代理对象的类型,需要为每一个目标类创建一个对应的代理类。代理类...

    动态aspx页面静态化

    在IT行业中,动态网页与静态网页是两种常见的网页类型。动态网页(如ASP.NET的aspx页面)通常基于服务器端的编程技术,可以实时生成内容,而静态网页(如shtml或html)则是预先编译好的,内容固定不变。本文将深入...

    cpp-Carp静态类型的lisp没有GC用于高性能的应用程序

    与动态类型的Lisp方言不同,Carp的静态类型系统在编译时可以进行更严格的检查,从而减少运行时错误的可能性。静态类型系统也允许编译器进行更深入的优化,提高了代码执行的效率。 不使用垃圾收集器是Carp的一个独特...

    C#动态静态调用C++ dll

    本教程将深入探讨如何在VS 2010环境下,使用C#进行动态和静态调用C++ DLL的方法。 首先,了解动态调用(DllImport)和静态调用(托管C++/CLI)的区别。动态调用是通过.NET Framework的`DllImport`特性来实现的,...

    java静态代理与动态代理

    ### Java静态代理与动态代理详解 ...静态代理适用于功能较为固定的场景,而动态代理则更适合于需要高度灵活性和可扩展性的应用。理解这两种代理方式的不同之处对于高效地进行Java编程是非常重要的。

    面向云原生生态的定义及最佳实践提供静态类型配置语言及工具支持在业务镜像外提供 Compile to Cloud 的技术栈

    KusionStack 提供面向云原生生态的定义及最佳实践,提供静态类型配置语言及工具支持,在业务镜像外提供 Compile to Cloud 的技术栈。Kusion 是一个意图驱动的平台编排器,它位于内部开发者平台 (IDP)的核心。通过 ...

    国内首个实现纯浏览器内编译、执行全链路的自研静态类型的编译型通用编程语言 为 WebAssembly 而生的通用编程语言

    编译型语言和静态类型是关键特征,这意味着代码在运行前会进行严格的类型检查,并转化为机器可理解的二进制码,这样的设计通常能提供更好的性能和安全性。而“为WebAssembly而生”意味着它被优化来利用WASM的优势,...

    Kotlin 是一种由 JetBrains 开发的静态类型编程语言.docx

    Kotlin 是一种由 JetBrains 开发的静态类型的编程语言,旨在解决 Java 中存在的问题,同时保持与 Java 的高度互操作性。这种语言的设计目标之一是为了提高开发者的生产力,尤其是在 Android 开发领域,Kotlin 已经...

    物流管理项目静态页面和需求文档

    这个项目包含了静态页面设计和详细的需求文档,是开发高效物流系统的关键组成部分。以下是对这些关键知识点的深入解析: **物流管理:** 物流管理是供应链管理的重要环节,涵盖了从原材料采购到产品送达消费者手中...

    Luajit 静态库(含32位和64位)

    - **优化**:通过动态类型分析和优化技术,Luajit 可以在运行时对代码进行优化,提高性能。 - **轻量级**:LuaJIT 本身体积小,易于嵌入到其他应用程序中。 2. **静态库介绍**: 静态库是指在编译时会被直接连接...

    C# 静态注入实现AOP

    `Mono.Cecil`是一个强大的.NET元数据操作库,它允许开发者在运行时动态地读取、修改并保存IL(中间语言)代码,从而实现静态注入,即在编译后的.NET程序集上进行代码修改。通过这种方式,我们可以实现在不修改源代码...

    原创自适应专题活动html静态模板.zip

    这意味着模板在设计时考虑了各种屏幕尺寸和设备类型,如桌面、平板和手机,确保在各种环境下都能提供良好的用户体验。 【描述】中的内容与标题相同,进一步确认了这个压缩包包含的资源是一个原创且具有自适应功能的...

    行业分类-设备装置-保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法.zip

    本知识点将深入探讨如何保护Java字节码,使其免受恶意运行环境中的静态和动态攻击。 一、静态攻击与防御策略 1. **反编译攻击**:黑客可以使用反编译工具,如JD-GUI或Procyon,将字节码还原为源代码,以便理解并...

    纯JavaScript静态树型

    1. **核心思想**:通过动态修改DOM元素的显示状态和位置属性来实现树形结构的展开和折叠功能。 2. **兼容性处理**:针对不同浏览器(如IE4和Navigator 4),采用不同的方法来实现相同的视觉效果。 3. **事件绑定**...

    LINUX C调用JAVA的静态方法和非静态方法(实例方法)小实例

    在Linux环境中,C语言可以通过Java Native Interface (JNI) 来调用Java的静态和非静态方法,实现两者之间的交互。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互,使得C/C++程序员可以编写...

    动态壁纸,现在一般只能在原生的机器上用

    动态壁纸是一种特殊的壁纸类型,它不仅提供静态的背景图像,还能展示动态的视觉效果,如动画、实时天气、时间等。在Android系统中,动态壁纸是原生支持的功能,允许用户自定义桌面背景,使手机界面更加生动有趣。...

    动态规划原版论文

    从描述来看,这份论文是以动态优化方法规划交通的案例研究,通过这个案例,学习者可以了解动态规划的基本思想和应用方法,进而解决其他类型的动态规划问题。 标题中提到的“静态和动态作业车间调度”是运筹学中的一...

Global site tag (gtag.js) - Google Analytics