Java 与 C++ 中的多态区别
来源:互联网 发布:雪梨淘宝店衣服怎么样 编辑:程序博客网 时间:2024/06/09 19:06
Java 与 C++ 中的多态区别
1.先看C++
#include <iostream>using namespace std;class Person{public:int x=1,y=1;void Show() { cout << "I am a Person " <<x<<y<< endl; }};class Student:public Person{public:void Show() { cout << "I am a Student " <<x<<y<< endl; }};int main(){ Student S0; Person P0=S0; P0.Show(); S0.Show(); return 0;}
运行结果
I am a Person 11I am a Student 11
2.再看Java
class Person{ public void Show(){ System.out.println("I am a Person"); }}class Student extends Person{ public void Show(){ System.out.println("I am a Student"); }}public class Main{ public static void main(String arg[]){ Student S0=new Student(); Person P0=S0; P0.Show(); S0.Show(); }}
运行结果
I am a StudentI am a Student
3.分析原因
Java与C++的绑定不同。Java中只有final、static、private和构造方法是态绑的,其它所有方法都采用动态绑定。而C++只有虚函数进行的是动态绑定。
所以在C++中,P0.Show()才用静态绑定的Show(),尽管指向的是Student。而Java则是动态绑定,因为有JVM,JVM会调用变量实际指向的对象的方法。P0实际是指向S0的,所以会调用S0的Show()。
0 0
- Java 与 C++ 中的多态区别
- java中的 i++ 与 C中的 i++ 的区别
- java中的 i++ 与 C中的 i++ 的区别
- java中的 i++ 与 C中的 i++ 的区别
- c/c++与java中的取余“%”运算的区别
- JAVA中的char与C语言中char的区别
- C数组与java数组在内存中的区别
- java与C区别
- 【Objective-C】java中的interface与Objective-C中的interface的区别
- Java中的static块与方法与C中的static的区别
- C语言与JAVA区别
- java与C的区别
- C与java的区别
- C与Java的区别
- objective-c学习笔记第一章《objective-c中类与java中的区别》
- objective-c学习笔记第二章《objective-c中类型,表达式与java中的区别》
- objective-c学习笔记第三章《objective-c循环结构与java中的区别》
- objective-c学习笔记第四章《objective-c 类(第二部分)与java中的区别》
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 斐波那契 解题报告
- [未完]Gson处理json资源帖
- uboot功能分析与patch
- spark streaming 多表查询运行日志
- Java 与 C++ 中的多态区别
- 【附原文:深度学习-开始Tensorflow】1.Getting Started With TensorFlow
- SpringMVC学习(二)之@RequestMapping
- 多线程(线程通信)
- 算法训练 数的划分 (动态规划)
- 【剑指offer】面试题10:二进制中1的个数
- Leetcode刷题记——75. Sort Colors(颜色排序)
- 从源码编译MYSQL5.7
- Noip 2009 解题报告(潜伏着,Hankson的趣味题,最优贸易,靶形数独)