0

我正在学习 JNI 如何从 Java 程序调用 C++ 对象方法。我正在使用 Android NDK/SDK 编写应用程序。我是 JNI 的初学者,我想知道是否支持多态性。也就是说,假设我有一个简单的 C++ 类:

class HeyBoy
{
    public:
        virtual int    getValue()
        {
            return 10;
        }
};

class HeyBoyDerived1 : public HeyBoy
{
    public:
        int    getValue()
        {
            return 20;
        }
}

class HeyBoyDerived2 : public HeyBoy
{
    public:
        int    getValue()
        {
            return 30;
        }
}

在运行时,我希望用户选择使用哪个实现(1 或 2),只需按下应用界面上的按钮。应该创建正确的 C++ 对象。然后,我会放置一个带有“获取值”标签的按钮。按下按钮时,getValue()应调用当前选定实现的方法。之后,结果将打印在手机屏幕上。我真的很想看一些代码示例!谢谢你。

4

1 回答 1

1

最简洁的答案是不。JNI 是一个 C 接口,它不知道 C++、类、继承或多态性。

更长的答案是:是的,C 函数可用于调用所需的构造函数和调用虚方法。

于 2012-09-30T22:02:48.610 回答