C++和Java继承的不同

本文探讨了C++和Java在继承方面的不同点。在Java中,即使引用是父类类型,对象为子类实例,仍能访问子类的方法。而在C++中,若通过父类指针调用子类非虚函数,会调用父类实现。对于访问权限,Java的protected成员在子类中保持可见,而C++的protected继承后在子类中变为protected。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中类定义的protected方法,其对象可以访问这些方法,C++中对象不可以访问protected函数;

 

Java中引用是父类A,对象是子类B的话,如A a=new B();a访问父类和子类都有的方法,访问的是子类的,可以访问A类的所有方法,但是不能访问B类独有的方法。

在C++中,A父类,A a,B是A的子类,B b,A *a=&b调用A、B都有的函数的时候,如果该函数不是虚函数,调用的是父类A的函数,是虚函数的话调用子类B的函数,a可以调用A类中所有的函数,不能调用B类独有的函数。

 

Java中继承的访问权限:

                         public                  protected              default                private

类内部             可以                      可以                      可以                      可以

本包                 可以                      可以                      可以                      X

子类                可以                      可以                       X                           X

外部包            可以                       X                            X                           X

C++中继承的访问权限:

    基类中      继承方式             子类中

    public     & public继承        => public
    public     & protected继承     => protected   
    public     & private继承       => private

    protected  & public继承        => protected
    protected  & protected继承     => protected   
    protected  & private继承       => private

    private    & public继承        => 子类无权访问
    private    & protected继承     => 子类无权访问
    private    & private继承       => 子类无权访问


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值