标签: protected

为什么protected可以在没有java继承的同一个包中访问?

  Modifier        Class     Package   Subclass  World
  public          Y         Y         Y         Y
  protected       Y         Y         Y         N
  no modifier     Y         Y         N         N
  private         Y         N         N         N
Run Code Online (Sandbox Code Playgroud)


  public class a {
  protected int x;
  }

  public class b {
        b() {
              a A=new a();
              A.x=9;//why we can access this field ?
        }
  }
Run Code Online (Sandbox Code Playgroud)

请帮助我了解Java中受保护的具体工作

java protected

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

是否可以模拟受保护的属性和方法

是否可以使用PHP Mockery模拟受保护的属性?

我得到了一个带有方法的类,我将其称为"a",它在从同一个类的受保护属性中检索的数组上做了一些魔术.

受保护的属性由另一个方法填充b,在同一个类中.

我想a通过模拟受保护的属性来测试方法,所以我不必b首先使用类方法.

这可能吗?如果没有,我应该重构我的代码吗?或者还有其他方法(考虑最佳实践).

php phpunit protected mocking mockery

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

为什么受保护的超类成员在作为参数传递时无法在子类函数中访问?

我得到一个编译错误,我有点困惑.这是在VS2003上.

错误C2248:'A :: y':无法访问在类'A'中声明的受保护成员

class A
{
public:
  A() : x(0), y(0) {}
protected:
  int x;
  int y;
};

class B : public A
{
public:
  B() : A(), z(0) {}
  B(const A& item) : A(), z(1) { x = item.y;}
private:
  int z;
};
Run Code Online (Sandbox Code Playgroud)

问题是x = item.y;

访问权限被指定为受保护.为什么B类的构造函数不能访问A :: y?

c++ protected member superclass

13
推荐指数
1
解决办法
4693
查看次数

覆盖Java中的受保护方法

Test.java

package a;
import b.B;
public class Test {
    public static void main(String[] v) {
        new A().test();
        new B().test();
    }
}
Run Code Online (Sandbox Code Playgroud)

A.java:

package a;
public class A {
    protected void test() { }
}
Run Code Online (Sandbox Code Playgroud)

B.java:

package b;
public class B extends a.A {
    protected void test() { }
}
Run Code Online (Sandbox Code Playgroud)

为什么会new B().test()出错?这不会破坏可见性规则吗?

B.test()是不可见的,Test因为它们在不同的包中,但它拒绝调用可见的test()in B超类.

将赞赏与JLS的适当部分的链接.

java methods overriding protected

13
推荐指数
3
解决办法
2万
查看次数

为什么我不能从保护模式调用BIOS中断?

对.今天我花了三个多小时试图理解为什么你不能在保护模式下调用bios ISR.我得到的一旦你设置和IDT它不一定是在通常的地址为IVT加段没有固定的大小在保护模式等.但我仍然不明白为什么不能你jsut创建一个4GB段,将您的IDT段映射到BIOS IVT,将所有内容设置为0,然后调用它们.不应该那样吗?

大多数文章要么说:"记住你不能在保护模式下使用BIOS中断!" 没有探索主题或极具描述性和引用陷阱,例外,图片重新制作,缺乏权利和段记录的问题作为其背后的原因.

如果有人能够提出一个更人性化的解释,那将是非常有帮助的...我不怀疑文章所说的内容,我只是想明白为什么会这么"痛苦"!

提前致谢!

protected mode interrupt bios

13
推荐指数
2
解决办法
3345
查看次数

访问受保护方法的方法指针?

这段代码:

class B {
 protected:
  void Foo(){}
}

class D : public B {
 public:
  void Baz() {
    Foo();
  }
  void Bar() {
    printf("%x\n", &B::Foo);
  }
}
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

t.cpp: In member function 'void D::Bar()':
Line 3: error: 'void B::Foo()' is protected
Run Code Online (Sandbox Code Playgroud)
  • 为什么我可以调用受保护的方法但不能使用其地址?
  • 有没有办法从派生类中标记完全可访问的内容,而不是只能从派生类所述派生类中访问?

顺便说一下:这看起来很相关,但是我正在寻找一个参考指标或类似内容的地方(希望这将导致如何按照我期望的方式工作).

c++ specifications protected

13
推荐指数
2
解决办法
5710
查看次数

保护内部

MSDN上的C#语言参考将"protected internal"定义为"Access仅限于当前程序集或从包含类派生的类型".但是从语义的角度来看,"受保护的内部"听起来像'受保护和内部',这意味着成员只能在同一个程序集中访问那些派生类.是否存在具有相同效果含义的访问修饰符?

c# protected internal

13
推荐指数
1
解决办法
6166
查看次数

我可以/如何...在PHP中调用类外的受保护函数

我有一个在某个类中定义的受保护函数.我希望能够在另一个函数中将该受保护函数调用到类之外.这是可能的,如果是这样,我怎么能实现它

class cExample{

   protected function funExample(){
   //functional code goes here

   return $someVar
   }//end of function

}//end of class


function outsideFunction(){

//Calls funExample();

}
Run Code Online (Sandbox Code Playgroud)

php function protected call

13
推荐指数
4
解决办法
3万
查看次数

为什么另一个包中的子类无法访问受保护的方法?

我在两个不同的包中有两个类:

package package1;

public class Class1 {
    public void tryMePublic() {
    }

    protected void tryMeProtected() {
    }
}


package package2;

import package1.Class1;

public class Class2 extends Class1 {
    doNow() {
        Class1 c = new Class1();
        c.tryMeProtected(); // ERROR: tryMeProtected() has protected access in Class1
        tryMeProtected();  // No error
    }    
}
Run Code Online (Sandbox Code Playgroud)

我可以理解为什么在调用时没有错误,tryMeProtected()因为Class2它继承了这个方法Class1.

但是,为什么是不是有可能的对象Class2访问此方法的对象上Class1使用 c.tryMeProtected();

java protected subclass modifier package

13
推荐指数
2
解决办法
3万
查看次数

受保护的继承有什么实际用途?

公共继承很容易.

答:公共B意味着每个A都是B.在大多数编程语言中,如vb.net和objective-c,这是唯一的继承类型.

私人继承也很容易,但毫无意义

答:私人B意味着A由B实现.但是,这是毫无意义的,因为这意味着A应该包含B. 所有权意味着更少的耦合,没有缺点.

然后我们有保护继承.

任何人都可以向我解释这到底是为了什么?有人说这是"作为一种关系".我还不是很清楚.

有没有人有一些样本案例,人们使用受保护的继承以良好的模式(和良心)实际生产用途?

c++ inheritance protected

13
推荐指数
2
解决办法
4391
查看次数