【Java笔记】浅谈C++和Java的运行时多态
来源:互联网 发布:怎样加入淘宝联盟 编辑:程序博客网 时间:2024/04/29 00:57
这篇文章仅提供给同时学习C++和Java的童鞋阅读理解。不罗嗦直接切入正题。
封装、多态、继承是所有面向对象程序设计语言的共同特征。那就不得不提多态了。多态分为静态多态和动态多态,也就是编译时多态和运行时多态。编译时多态的代表就是函数重载,在此略过它。笔者今天主要描述的是动态多态。
动态多态的一个典型就是:父类对象引用子类对象,C++中还可以父类对象指针指向子类对象。既然说了C++和Java,那就是要描述一下他们两者的区别。以免大家弄混这两门语言的语法。
public class Child extends Base{ public static void main(String args[]) { Base base = new Child(); base.function(); //OK base.function1(); //error } public void function() { System.out.println("child"); } public void function1() { System.out.println("child"); }}class Base{ public void function() { System.out.println("base"); }}
共同点:
编译时base是Base的对象,运行时base是Child的对象。编译阶段,父类对象引用子类对象的时候,只能调用父类中存在的方法。因为在编译阶段编译器知道base是Base的对象,而Base类中只有 function() 这个方法。因此尝试调用子类特有的方法是不可行的。编译器会提示base没有 function1() 这个方法。
小结:父类对象仅能调用编译时父类所拥有的方法。
区别:
C++中,在运行时父类对象调用的成员函数仍然是父类的成员函数,即使子类重写了父类的成员函数。
而在Java中,运行时,父类对象其实已经成为了子类的对象,它所调用的是子类的方法。
!!!但是:C++的功能并不是这么弱,要想实现Java中的那种情形,那就要用到虚函数了。即:将被子类覆盖的函数定义为虚函数。笔者可以自行学习C++中的虚函数这一概念,推荐书籍《C++ Primer》。
0 0
- 【Java笔记】浅谈C++和Java的运行时多态
- 浅谈Java和C
- 浅谈java的运行过程
- Java初探:浅谈Java语言和C语言的区别
- 浅谈Java面向对象和C语言的实现
- Java笔记:浅谈数据库的基础
- java的编译时多态和运行时多态
- java的编译时多态和运行时多态
- java、C++、Objective-C中运行时多态的表现
- C++/JAVA运行机制和运行效率
- 浅谈Linux下Java运行环境的建立
- 浅谈Java Applet应用程序的编辑与运行
- 浅谈Linux下Java运行环境的建立
- java的编译和运行
- java学习笔记---浅谈java多态的注意要点
- 浅谈SAP和Java
- 浅谈SAP和Java
- 浅谈 java 和 python
- get和post传递数据过程中的编码问题
- Button和ImageButton控件
- Quartz 2D编程指南(2) - 图形上下文(Graphics Contexts)
- Extjs5.0(3):利用官方工具搭建MVVM架构项目
- STS SPRING TOOL SUITE 自动关闭 重启进度 三分之一打不开
- 【Java笔记】浅谈C++和Java的运行时多态
- VBA的LENB()和Excel的LENB()区别
- css使DIV位于页面最底部
- MySQL--索引
- Linux下Eclipse中danamic web项目无法新建server的问题
- 个人常用下载app的网站
- ios 生成图片缩略图
- 解除ABAP程序编辑锁的方法
- 搭建GCM(服务端)