标签: access-modifiers

获取每种方法的访问/可见性修饰符

有没有办法知道对象内部方法的类型(对不起,如果这不是正确的名称)?想象一下,你有一个有5种方法的对象,其中3种是公共的,剩下的是受保护/私有的,你怎么知道方法是否公开?

干杯!

php oop methods access-modifiers

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

访问另一个类的受保护成员

我有一个类 A,我需要从中访问类 B 的受保护成员,其方式与在 C++ 中使用朋友关键字的方式相同。但是,内部修饰符不适合我的需要。B 类将需要创建 A 类的实例,修改其私有数据,并返回对该类的引用。这些 A 类成员需要对原始调用者保持私有。

public class A
{
    protected int x;
}

public class B
{
    public static A CreateClassA()
    {
        A x = new A();
        x.x = 5;   // ERROR : No privilege
        return x;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# class access-modifiers friend

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

Java Access Modifiers

根据第二个文档表(http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html),没有标识符的成员对子类不可见.
但是,当我运行以下示例代码时,会打印"1"(b的内容)!

class Class1{
    private int a=0;
    int b=1;
    protected int c=2;
    public int d=3;
}

class Class2 extends Class1{ }

public class HelloWorld{

     public static void main(String []args){
        Class2 klass=new Class2();
        System.out.println(klass.b);
     }
}
Run Code Online (Sandbox Code Playgroud)

如果无法从子类访问没有访问修饰符的成员,为什么在此示例中打印它?
它应该抛出一个错误,就像私有访问修饰符一样,不应该吗?

java access-modifiers

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

在运行时更改访问修饰符

仅仅为了举例,我写了这样的:

public class MyClass
{
    private int MyMethod()
    {
        return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

没有办法使用Reflection或其他东西将MyClass::MyMethod()运行时的访问修饰符更改为public然后调用它?

c# reflection access-modifiers

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

Java - 无法从子类访问受保护的方法

  • 我有以下 Foo 类,其中包含主要方法。
  • Foo 扩展了 Nee。
  • Foo 类在 com.package1 中,Nee 类在 com.package2 中。
  • 问题是我无法从 Foo 类通过其对象访问 Nee 的受保护方法。为什么会这样?(理论上说受保护的成员可以被同一包中的子类或类访问)

Foo 类如下所示,

package com.package1;

import com.package2.Nee;

/**
  *
  * @author Dilukshan Mahendra
  */
public class Foo extends Nee{

    public static void main(String[] args) {
        Nee mynee = new Nee();
        /* mynee.sayProtected(); This gives me a compile error,
                                 sayProtected() has protected
                                 access in com.package2.Nee
        */
    }

}
Run Code Online (Sandbox Code Playgroud)

Nee 类如下所示,

package com.package2;

/**
 *
 * @author Dilukshan Mahendra
 */
public class Nee {



    protected …
Run Code Online (Sandbox Code Playgroud)

java access-modifiers

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

修改数组numpy中的实际元素值

我无法在循环中修改 numpy 数组的实际值。我的代码如下:

labels_class = np.copy(labels_train)
for label in labels_class:
  labels_class[label] = 1 if (label == classifier) else 0
Run Code Online (Sandbox Code Playgroud)

labels_class- 只是一个大小为 N 且值为 [0, 39] 的 numpy 数组。的值labels_class[label]在循环中是正确的(==修改),但在循环外labels_class保持不变。

我也试过nditer,没用:

 for label in np.nditer(labels_class, op_flags=['readwrite']):
      label = 1 if (label == classifier) else 0
Run Code Online (Sandbox Code Playgroud)

参考资料中,说“要实际修改数组的元素,x 应该用省略号索引”

我怎么做?语法是什么?

python arrays numpy access-modifiers

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

为什么要使用访问修饰符

我知道不同访问修饰符之间的区别以及何时使用它们,但我不知道为什么。我知道它简化了项目,但还有其他用途,例如安全性吗?

c# security access-modifiers

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

如果我们为Android视图使用私有访问修饰符会有什么危害吗?

例如,以下代码是否正确?

private LinearLayout layout1;
private LinearLayout layout2;
private LinearLayout layout3;
Run Code Online (Sandbox Code Playgroud)

android access-modifiers

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

为什么我们不能在kotlin中将类的可见性标记为"受保护"?

我是kotlin的新手我最近在kotlin学习了继承,然后我意识到我们不能将类的可见性标记为"受保护".如果我错了,请纠正我,还是有其他办法让班级得到保护?

visibility class protected access-modifiers kotlin

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

c#错误:修饰符“ private”对此项目无效

我在函数的前面放了什么修饰符都没关系(我尝试过使用public,private甚至protected),但我总是收到一个错误,同样的错误。仅在删除修饰符且函数“ Array()”不包含任何修饰符后,代码才干净。有人可以看一下我的代码并向我解释发生了什么吗,我是c#的新手,还是寻求帮助的新手,所以请原谅我迄今为止犯的所有错误。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {

            public void Array()//nu se pune in interiorul functiei void Main (), deoarece va forma nesting, si ne va da eroare la compilare.
            {
                int[] intArray;
                intArray = new int[3];//all values will be 3


                var doubleArray = new[] { 34.23, 10.2, 23.2 };

                //var arrayElement = doubleArray[0];
                //doubleArray[1] = 5.55;

                for (var i = 0; i < intArray.Length; …
Run Code Online (Sandbox Code Playgroud)

c# access-modifiers c#-7.0 local-functions

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