C++和Java对类继承的差异
来源:互联网 发布:淘宝旺旺怎么收货 编辑:程序博客网 时间:2024/06/03 21:11
#include <stdio.h>class Base{public: int i; Base() { i = 99; amethod(); } virtual void amethod() { printf("Base.amethod()\n"); }};class Derived : public Base{public: int i; Derived() { i = -1; } virtual void amethod() { printf("Derived.amethod()\n"); }};int main(int argc, char *argv[]){ Base *b = new Derived(); printf("%d\n",b->i); b->amethod();}
其输出结果为:
Base.amethod()
99
Derived.amethod()
同样的java代码
class Base{ int i = 99; public void amethod() { System.out.println("Base.amethod()"); } Base() { amethod(); }}class Derived extends Base{ int i = -1; public void amethod() { System.out.println("Derived.amethod()"); } public static void main(String argv[]) { Base b = new Derived(); System.out.println(b.i); b.amethod(); }}
其输出结果为
Derived.amethod()
99
Derived.amethod()
差异体现在第一行输出;
这行是在Derived的构造函数中输出的,Derived本事没有构造函数,它只调用父类的构造函数,即Base的amethod();
对于C++代码,执行的是Base::amethod();
对于Java代码,执行的是Derived::amthod();
为什么呢,在C++中调用基类的amethod时,此时子类还没有准备好,故执行的是基类的amethod.
- C++和Java对类继承的差异
- Java和C/C++的差异总结
- java 领导和员工的差异(简单的类及继承)
- C++对C的兼容和继承
- c和java语言之间的差异(摘录)
- 发现一个c和java语言执行的差异
- Fortran 和 C 的差异
- JScript与SpiderMonkey对继承成员可见性的差异
- 组合类和友员类的差异有哪些(C++)
- C++ 和C# 继承机制的差异之浅见
- C语言和C++的部分差异
- C++debug和release的差异
- 黑马程序员------C和OC的差异
- 黑马程序员--oc和c的差异
- C和C++ const的声明差异
- 对java继承的理解
- java中对类之间的继承和可调用性的摸索
- (新人)关于自己对java的继承、封装、抽象类和接口的理解
- 从适配器模式看C++继承方式
- J2EE中获得web路径和类路径总结
- 导出没有乱码的csv
- 更简单更轻松的创建Windows 8可启动U盘
- You're Given a String...
- C++和Java对类继承的差异
- eclipse添加新web程序的方法
- SAP 生产订单工序外协对应的工序报工后,对应的采购订单自动入库
- javascipt操作数组加值减值
- When to Use What Data Structures
- 转载一篇vc老鸟的心得体会:对零基础MFC学习者的一点建议:
- ELJOnline: User Mode Drivers By Linux Devices 2002-03-01
- 15个最新的HTML5及CSS3特效代码生成器
- hdu 2255(KM算法模板)