C++和java对于 "多态 访问权限"的区别

#include <iostream>
using namespace std;

class A
{
public:
//private:
    virtual
    void print() { cout<< "A print\n"; }
};

class B: public A
{
//public:
protected:
    void print() { cout<< "B print\n"; }
};


int main()
{
    A *a = new B();
    B *b = new B();

    /* ok,这个是在编译期,由编译器check 调用引用/指针 自身类型的调用方法的访问权限,
       C++规范:编译期并不check引用/指针所指实际对象及其类型
       而是在运行期,才去check引用/指针所指实际对象及其类型
       动态运行期则不在check实际指向对象所在类的方法的访问权限 */
    a->print();

    //b->print(); //error,protected 权限不够 
    return 0;
}

C++中,"多态 访问权限", 从表Base----->Drivered, 访问权限(visibility),可以变小.

 


 

//MyBase.java
package mytest;
public class MyBase {
    public void print() {
        System.out.println("MyBase");
    }
}


//MyDrivered.java
package mytest;
public class MyDrivered extends MyBase {
    //protected //error, 访问权限(visibility)从Base---->Drivered,不可变小
    public
    void print() {
        System.out.println("MyDrivered");
    }
}

Java中,"多态 访问权限", 从表Base----->Drivered, 访问权限(visibility),不可变小

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值