标签: private

什么是访问说明符?我应该继承私人,受保护还是公共?

关于继承的访问修饰符的含义我很困惑.是什么涉及继承之间的区别private,protected以及public关键字?

c++ private class protected

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

私钥长度字节

所以即时生成2048 RSA密钥对.但是当我查看私钥时,长度只有1232字节.这与2048有什么关系,还是2048只是模数大小?

cryptography rsa private key

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

这个私有变量如何访问?

编写以下代码时,编译器如何不抱怨?

public class MyClass 
{
    private int count;

    public MyClass(int x){
        this.count=x;
    }

    public void testPrivate(MyClass o){
        System.out.println(o.count);
    }   
}
Run Code Online (Sandbox Code Playgroud)

即使它是testPrivate写入的同一个类的实例,它不应该给出编译错误System.out.println(o.count)吗?毕竟,我试图直接访问私有变量.
代码甚至运行良好.

java private

42
推荐指数
3
解决办法
6245
查看次数

公共,私人 - 大写,小写:

来自Delphi的GoLang新手,C++:

我第一次尝试在Go中创建自己的包,我遵循了有关如何布局工作空间等的所有说明,但我一直在收到编译器错误:

./myPackage.go:52: undefined: myFunc
Run Code Online (Sandbox Code Playgroud)

稍微探讨一下后,我发现Go中的公共访问修饰符只需通过大写声明一个函数即可实现.大.

但是当我开始尝试容器类时 - List对于初学者,我发现我必须声明一个List引用返回值,如下所示:

func GetFactors(value *int64) *list.List {...
Run Code Online (Sandbox Code Playgroud)

*list 是小写的.

当我声明对列表的本地引用时 - 我必须使用:

l := list.New()
Run Code Online (Sandbox Code Playgroud)

再次,小写的list.

所以,我很困惑.规则是什么?列表调用和引用显然是公开的,或者我无法调用/使用它们 - 所以为什么它们是小写的?

private public access-modifiers case-sensitive go

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

为什么私有虚拟方法在C#中是非法的?

来自C++背景,这让我感到惊讶.在C++中,将虚拟函数设为私有是一种很好的做法.来自http://www.gotw.ca/publications/mill18.htm:"准则#2:更喜欢将虚拟功能设为私有."

我还引用Eric Lippert的博客,来自Knights-knaves-protected-and-internal:

私有虚拟方法在C#中是非法的,这让我感到厌烦.如果我们拥有它,我会完全使用该功能.

据我所知,在C#中,您无法覆盖派生(但不是嵌套)类中的私有虚方法.为什么会这样?在C++中,访问说明符与是否可以覆盖函数无关.

c# virtual private

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

我们何时需要C++中的私有构造函数

我对c ++中的私有构造函数有疑问,如果构造函数是私有的,如何创建类的实例?我们应该在类中有一个getInstance()方法吗?

c++ constructor private

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

C++类(公共,私有和受保护)

如何可以在C++类中声明public,privateprotected

c++ private protected public access-modifiers

38
推荐指数
4
解决办法
5万
查看次数

没有办法在javascript中拥有基于类的对象?

基于javascript原型的面向对象编程风格很有趣,但是在很多情况下你需要能够从类创建对象.

例如,在矢量绘图应用程序中,工作空间通常在绘图开始时为空:我无法从现有工作空间创建新的"行".更一般地说,动态创建对象的每种情况都需要使用类.

我已经阅读了很多教程和书"Javascript:好的部分",但在我看来,没有办法定义尊重1)封装的类和2)有效的成员方法声明(我的意思是:成员)正在定义的方法,并在每个类实例之间共享).

要定义私有变量,正在使用闭包:

function ClassA()
{
    var value = 1;
    this.getValue = function()
    {
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是"ClassA"的每个实例都有自己的成员函数"getValue"的副本,这是无效的.

要有效地定义成员函数,正在使用原型:

function ClassB()
{
    this.value = 1;
}

ClassB.prototype.getValue = function()
{
    return this.value;
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是成员变量"value"是公共的.

我不认为这个问题可以轻易解决,因为在创建对象期间需要定义"私有"变量(以便对象可以访问其创建的上下文,而不暴露those值)而基于原型的成员函数定义必须在对象创建后完成,因此原型有意义("this.prototype"不存在,我已经检查过).

或者我错过了什么?


编辑:

首先,感谢您的有趣答案.

我只想为我的初始消息添加一点精度:

我真正想做的是拥有1)私有变量(封装是好的,因为人们只能访问他们需要的东西)和2)有效的成员方法声明(避免拷贝).

似乎简单的私有变量声明只能通过javascript中的闭包来实现,这就是为什么我专注于基于类的方法.如果有一种方法可以用基于原型的方法实现简单的私有变量声明,那对我来说没问题,我不是一个激烈的基于类的方法proponnent.

在阅读答案后,似乎简单的解决方案是忘记私有,并使用特殊的编码约定来阻止其他程序员直接访问"私有"变量...

我同意,我的标题/第一句话对于我想在这里讨论的问题有误导性.

javascript oop private class

38
推荐指数
3
解决办法
3868
查看次数

C++编译器在封装行为上有所不同 - 哪一个正确?

编译器(clang-5.0.0,GCC-7.3,ICC-18MSVC-19)发散的成员的可访问性WRT A下面.

class A {

    template <class> static constexpr int f() { return 0; }

    template <int> struct B {};

    template <class T> using C = B<f<T>()>;

};
Run Code Online (Sandbox Code Playgroud)

确实,请考虑以下用法:

template <class T> using D = A::C<T>;

int main() {
                        //    | clang | gcc | icc | msvc
    (void) A::f<int>(); // 1: | f     | f   | f   | f, (C)
    (void) A::B<0>{};   // 2: | B     |     | B   | …
Run Code Online (Sandbox Code Playgroud)

c++ gcc encapsulation private clang

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

Java Spring bean与私有构造函数

在Spring中,bean的类没有公共构造函数但只有私有吗?在创建bean时是否会调用此私有构造函数?谢谢.

java spring constructor private javabeans

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