标签: protected

Scala:指定覆盖受保护方法的公共方法

我正在编写一个trait应该指定clone返回a 的方法CloneResult,如下所示:

trait TraitWithClone extends Cloneable {
  def clone: CloneResult
}
Run Code Online (Sandbox Code Playgroud)

这里的目的是收紧对这个界面有用java.lang.Objectclone()东西的返回类型.但是,当我尝试编译它时,我得到:

错误:在特征View2中重写方法克隆类型为()CloneResult; 类型为()java.lang.Object的类Object中的方法clone具有较弱的访问权限; 它应该是公开的; (注意在型性状视图2()CloneResult是抽象的,并且由具体的方法克隆在类型的类对象因此重写该方法克隆()java.lang.Object中)

public当Scala没有关键字时,我如何要求实现?我知道我能做到:

trait TraitWithClone extends Cloneable {
  override def clone = cloneImpl
  protected def cloneImpl: CloneResult
}
Run Code Online (Sandbox Code Playgroud)

......但这似乎是一个黑客.有什么建议?

methods overriding clone scala protected

7
推荐指数
1
解决办法
1888
查看次数

朋友声明的放置

在一个类friend中放置一个子句(即在protected块内而不是private块中)是否重要?

c++ class protected friend private-members

7
推荐指数
1
解决办法
336
查看次数

无法访问基类中的受保护成员

考虑您有以下代码:

public abstract class MenuItem
    {
        protected string m_Title;
        protected int m_Level;
        protected MenuItem m_ParentItem;
        public event ChooseEventHandler m_Click;

        protected MenuItem(string i_Title, int i_Level, MenuItem i_ParentItem)
        {
            m_Title = i_Title;
            m_Level = i_Level;
            m_ParentItem = i_ParentItem;
        }
}
Run Code Online (Sandbox Code Playgroud)

public class ContainerItem : MenuItem
    {
    private List<MenuItem> m_SubMenuItems;

    public ContainerItem(string i_Title, int i_Level, MenuItem i_ParentItem)
                            :base(i_Title, i_Level, i_ParentItem)
    {
        m_SubMenuItems = new List<MenuItem>();
    }

    public string GetListOfSubItems()
    {
        string subItemsListStr = string.Empty;

        foreach (MenuItem item in m_SubMenuItems)
        {
           item.m_Title = …
Run Code Online (Sandbox Code Playgroud)

c# inheritance protected

7
推荐指数
1
解决办法
1万
查看次数

Python-访问类的受保护成员_

给定一个具有一些受保护成员的类,并通过一个公共接口对其进行修改,通常什么时候可以直接访问受保护成员?我想到了一些具体的例子:

  1. 单元测试
  2. 内部私有方法(例如__add__或__cmp__)访问其他受保护的属性
  3. 递归数据结构(例如,访问链表中的next._data)

我不想公开这些属性,因为我不想公开地触摸它们。我的语法IDE语法高亮显示,我在访问受保护的成员时错了-谁在这里?

编辑 -在下面添加一个简单的示例:

class Complex:
    def __init__(self, imaginary, base):
        self._imaginary = imaginary
        self._base = base

    def __str__(self):
        return "%fi + %f" % self._base, self._imaginary

    def __add__(self, other):
        return Complex(self._imaginary + other._imaginary, self._base + other._base)
Run Code Online (Sandbox Code Playgroud)

Pycharm 使用以下内容突出显示other._imaginaryother._base

访问类的受保护成员_imaginary

python oop attributes protected

7
推荐指数
1
解决办法
6319
查看次数

c ++中基类中受保护字段的问题

我有一个基类,比如BassClass,有一些字段,我让它们受到保护,还有一些纯虚函数.然后派生类,比如说DerivedClassclass DerivedClass : public BassClass.DerivedClass不应该从BassClass继承受保护的字段吗?当我尝试编译DerivedClass时,编译器抱怨DerivedClass没有任何这些字段,这里有什么问题?谢谢

c++ inheritance field protected

6
推荐指数
1
解决办法
3811
查看次数

无法覆盖属性的受保护集

我有以下基类:

abstract class Base
{
 public abstract object Var
 {
  get;
  protected set;
 }
}
Run Code Online (Sandbox Code Playgroud)

而这个派生类:

class Derived : Base
{
 public override object Var
 {
  get {//code here
  }
  set {//code here -- I get error here!
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

覆盖'protected'继承成员'Var'时无法更改访问修饰符

我尝试在设置之前添加一个protectedprivate关键字,但它没有帮助.我该如何解决?

更新:
基类必须确保子类Var在创建时提供值.所以我需要在Base类中声明setter.
或者,我可以声明一个私有成员变量来执行此操作并删除setter,但这不是这里讨论的选项.

c# inheritance overriding protected

6
推荐指数
1
解决办法
1万
查看次数

朋友见基类吗?

给出示例代码:

class Base {
public:
  bool pub;
protected:
  bool prot;
};

class Derived : private Base {
  friend class MyFriend;
};

class MyFriend {
  Derived _derived;

  void test() {
    // Does standard provide me access to _derived.pub and _derived.prot?
    cout << "Am I allowed access to this: " << _derived.pub
         << " and this: " << _derived.prot;
  }
};
Run Code Online (Sandbox Code Playgroud)

做朋友会给我所有的访问权限,我会得到好像我是班级中的一员,我是他的朋友吗?换句话说,由于我是朋友,我可以获得私人继承的基类的受保护和公共成员吗?

c++ inheritance private protected friend

6
推荐指数
1
解决办法
2956
查看次数

Java:无法访问扩展子类中超类的受保护成员

我想就此进行一些讨论,但我无法推断出我案例的答案.仍然需要帮助.

这是我的代码:

package JustRandomPackage;

public class YetAnotherClass{
    protected int variable = 5;
}
Run Code Online (Sandbox Code Playgroud)
package FirstChapter;

import JustRandomPackage.*;

public class ATypeNameProgram extends YetAnotherClass{
    public static void main(String[] args) {

        YetAnotherClass bill = new YetAnotherClass();
        System.out.println(bill.variable); // error: YetAnotherClass.variable is not visible

    }
}
Run Code Online (Sandbox Code Playgroud)

之后的一些定义,上面的例子似乎令人困惑:

 1. Subclass is a class that extends another class.
 2. Class members declared as protected can be accessed from 
    the classes in the same package as well as classes in other packages 
    that are subclasses of the …
Run Code Online (Sandbox Code Playgroud)

java protected

6
推荐指数
1
解决办法
4286
查看次数

如何解决"实施限制:特征...访问受保护的方法......在具体的特征方法中".

我正在使用的Java库类声明

protected getPage(): Page { ... }
Run Code Online (Sandbox Code Playgroud)

现在我想帮助Scala mixin添加我经常使用的功能.我不想扩展类,因为Java类有不同的子类我想在不同的地方扩展.问题是,如果我getPage()在我的mixin中使用trait,我会收到此错误:

实现限制:trait MyMixin访问getPage具体特征方法中的受保护方法.

有没有一个解决方案如何让它工作,而不影响我的子类?为什么会有这种限制?


到目前为止,我提出了一个解决方法:我将特征中的方法覆盖为

override def getPage(): Page = super.getPage();
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我并不完全满意.幸运的是,我不需要getPage()在我的子类中覆盖,但是如果我需要,我将获得相同方法的两个覆盖,并且这种解决方法将无法工作.

scala compiler-errors protected traits mixins

6
推荐指数
1
解决办法
1403
查看次数

Java和c#中受保护的成员差异

我在Java中有以下代码

public class First {
    protected int z;

    First()
    {
        System.out.append("First const");
    }

}

class Second extends First {

    private int b;
    protected int a;

}

class Test {
    /**
     * @param args the command line arguments
     */
    int a=0;

    public static void main(String[] args) {
        // TODO code application logic here
        First t=new Second();
        t.z=10; work fine
        First x=new First();
        x.z=1; // works fine
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以z通过创建base类的对象来访问

C#

class A
{
    protected int x = …
Run Code Online (Sandbox Code Playgroud)

c# java oop protected

6
推荐指数
1
解决办法
1049
查看次数