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

来源:互联网 发布:连战夫人面相知乎 编辑:程序博客网 时间:2024/06/04 19:37
#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.javapackage mytest;public class MyBase {    public void print() {        System.out.println("MyBase");    }}//MyDrivered.javapackage mytest;public class MyDrivered extends MyBase {    //protected //error, 访问权限(visibility)从Base---->Drivered,不可变小    public    void print() {        System.out.println("MyDrivered");    }}

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

0 0
原创粉丝点击