JNI基础 -- C++基础知识(继承多态,虚函数 )

2020-04-19  本文已影响0人  刘小厨

继承

在Java中类的继承只能是单继承,但是在C++中可以多继承
继承是通过一个冒号表示的,如下:

//允许多继承
class Parent
{

};

class GrandParent
{

};

//允许多继承 ,可用private或public声明继承的权限,默认private 
class Child : private Parent , public GrandParent {

};

C++中的继承还可以声明继承的作用域,有private和public,默认是private

如果在Child和Parent类中都实现一个签名相同的test()方法,然后创建一个Child对象,调用child.test()的方法,代码执行的是Child类的test()方法,这一点和Java一致
C++中没有super.test()这种调用父类方法的方式,如果想调用父类方法可以通过:
Parent::test()的方式调用

代码:

class Parent
{

public:
    virtual void test(){
        cout << "Parent" << endl;
    }
};


class Child : public Parent{
public:
    void test() {
        cout << "Child" << endl;
    }
};

多态-静态多态

如果我们这样调用:

 Parent* child = new Child();
    child->test();

控制台输出结果为:

Parent

如果是Java使用类似的代码,我们输出的结果肯定是Child,因为C++的编译的机制和Java是不一样的,这种多态的使用在C++中是一种静态多态,在编译的过程中,实例化的是一个Parent

多态-动态多态

如果上述代码执行我们想调用Child的test()方法,就需要使用动态多态,这里需要借助C++中的虚函数,将.h头文件中Parent的test()方法用关键字virtual修饰如下:

virtual void test(){
        cout << "Parent" << endl;
    }

使用虚函数需要注意的点:

我们可以通过虚函数在父类中声明一个纯虚函数,使用virtual关键字声明一个函数,不做实现,子类必须实现,类似于Java中的抽象方法,比如:

//等于0表示该方法没有实现
virtual void test1() = 0;
上一篇 下一篇

猜你喜欢

热点阅读