Java 的 interface、abstract class 与 C++ 的多继承、虚基类
来源:互联网 发布:淘宝母婴店图片装修 编辑:程序博客网 时间:2024/06/01 07:19
Java 与 C++ 的主要区别
1.Java 堆栈内存均自动托管,C++ 需要人工管理堆内存;
2.Java 支持反射,C++ 不支持反射;
3.Java 单继承,只能通过 interface 实现多继承;C++ 支持多继承,并且支持虚继承。
4.Java 不支持作用域内变量重名,用包名区分,没有全局变量;C++ 支持作用域内变量重名,使用名字空间区分,有全局变量,所谓的全局变量其实质为 domain 名字空间;
5.Java 支持嵌套类,类与类的关系可以是非平行关系,内部类可以访问外部类的成员变量,C++ 中所有类都是平行关系,伪嵌套关系可以通过友元实现!
表面上的代码差异
1.C++ 类与 Java 类的对比:
// C++ classclass Parent{public:static int staticValue = 0;public:void Method1(){cout << "C++ class!\n";}};class Test: public Parent{private:int value1;const float value2 = 3.4;static void* value3 = nullptr;public:static const int value4 = 5;public:void Method1(){cout << Parent::staticValue << endl;this->Parent::Method1();}static void Method2(){cout << value4 << endl;}};
// Java classpublic class Parent{public static int static_value = 0;public void method1(){System.out.println("Java class!");}}public class extends Parent{private int value1;private final float value2 = 3.4;private static String value3 = null;public static final int value4 = 5;public void method1(){System.out.println(Parent.static_value);super.method1();}public static method2(){System.out.println(value4);}}
2.C++ 与 Java 多态比较:
// Java 多态public class TestJava {public static void main(String args[]) {abstract class Animal {public void eat() {System.out.println("吃");}public abstract void action();}class Dog extends Animal {public void eat() {System.out.println("狗吃屎");}public void action() {System.out.println("狗吠");}public void work() {System.out.println("狗拿耗子");}}class Cat extends Animal {public void eat() {System.out.println("猫吃鱼");}public void action() {System.out.println("猫卖萌");}public void work() {System.out.println("猫在叫");}}Animal a = new Dog();a.eat();a.action();if (a instanceof Dog)((Dog)a).work();}}
注意,C++ 使用 typeid,java 使用 instanceof 关键字!
0 0
- Java 的 interface、abstract class 与 C++ 的多继承、虚基类
- Java中继承abstract class和interface以及继承abstract class和普通class的应用比较
- java abstract class 和 interface的概念分析与理解
- Java 中abstract class 与 interface 的区别
- java笔试题---interface与abstract class的区别
- Java中 abstract class 与interface的区别
- Interface与Abstract class的异同
- Interface与Abstract class的异同
- Interface与Abstract class的异同
- 走出abstract class与interface的困惑
- abstract class与interface的区别
- abstract class与interface的区别
- interface与abstract class的区别小结
- abstract class 与 interface 的区别
- Abstract Class与Interface的区别
- abstract class与interface的区别
- Interface与Abstract class的异同
- abstract class与interface的区别
- ios 播放声音文件
- 大牛们推荐的VC++的学习网址
- 引导页
- codeforces 317 A - Lengthening Sticks
- gcc 编译多个源文件
- Java 的 interface、abstract class 与 C++ 的多继承、虚基类
- 【Django】优化小技巧之清除过期session
- Android:AsyncTask -- 异步任务
- LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别
- 互联网文摘
- popwindow在View的上,下,左,右 显示
- json(map)与xml的转化
- Spring MVC教程,快速入门,深入分析
- ios 本地存储之NSUserDefaults