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

继承

在Java中类的继承只能是单继承,但是在C++中可以多继承。

继承是通过一个冒号表示的,如下:

//允许多继承

class Parent

{

};

class GrandParent

{

};

//允许多继承 ,可用private或public声明继承的权限,默认private

class Child : private Parent , public GrandParent {

};

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

private表示 子类只能访问父类私有的方法和变量

public表示 父类的方法和变量子类都可以访问

如果在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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值