zoukankan      html  css  js  c++  java
  • 继承的访问级别

    最近遇到一个问题,X++继承的时候子类是否可以改变父类方法的访问级别?
    记得C++子类可以降低其父类方法的访问级别,比如父类方法的访问级别是public,子类方法覆盖后可改为protected或者private,C#是不允许更改其父类方法的访问级别的,子类和父类的访问级别必须一样。另外C#不能覆盖private的方法,Java在编译期倒是不会阻止覆盖private方法,只是在运行期不会调用。
    X++也不能覆盖private的方法,如果试图覆盖父类的private方法,会报如下错误
    方法 ParentMethod 已声明为专用方法,不能重载。
    不过对于访问级别的问题,X++的处理比较让人费解,跟C++和C#都不一样,它只允许子类提升父类方法的访问级别,比如protected的方法,子类覆盖的时候可以更改成public,但不允许降低其访问级别,比如把protected的方法改为private。
    父类方法:

    protected void ParentMethod()
    {
        ;
        info(
    "I'm from Parent");
    }

    子类方法:

    public void ParentMethod()
    {
        super();
        info(
    "I'm from Child");
    }

    上面的方法是可以编译通过的。
    调用:

        Child child = new Child();
        ;
        child.ParentMethod();

    这样子类就暴露了父类的protected方法ParentMethod,不太清楚X++为什么要这样设计。

  • 相关阅读:
    OpenGL红宝书例3.1 -- glBufferSubData使用
    JNI调用问题(部分机型崩溃)
    文件编码转换工具
    vs2013安装visual assist和viemu之后提示功能等无效解决
    cocos2d-lua SDK接入
    OpenGL中shader读取实现
    CURL C++网络延时或者最低网速下载设置
    Spring框架
    软件安装方式
    Web前端常见问题
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/700261.html
Copyright © 2011-2022 走看看