标签: encapsulation

python中的单下划线与双下划线封装

我看到在下划线的帮助下,可以在类中声明私有成员,但只要有一个分数,它仍然可以在 main 中访问,但如果有两个分数则不能。如果 2 使变量私有,那么为什么只有 1 呢?单下划线变量的用途/目的是什么?

class Temp:
    def __init__(self):
    self.a = 123
    self._b = 123
    self.__c = 123

obj = Temp()
print(obj.a)
print(obj._b)
print(obj.__c)
Run Code Online (Sandbox Code Playgroud)

python encapsulation class

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

为什么我可以在Java中使用getter设置私有类属性的值?

我是Java的新手,我想知道为什么可以这样设置私有属性的值,而不使用setter?:

class Example {
   private int[] thing;
   public void initialize() {
       thing = new int[10];
   }
   public int[] getThing() { 
       return thing;
   }
}
class myclass {
   public static void main(String args[]) {
       Example e = new Example();
       e.initialize();
       e.getThing()[0] = 1;
       System.out.println(e.getThing()[0]) // value is still 1...
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么这是合法的......

编辑:我希望e.getThing()返回thing的值而不是对thing的引用,即使是这种情况,因为"thing"是私有的,我以为我不能直接修改它.

java encapsulation class

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

在android中解码APK文件

我尝试使用dex2jar and apktool.我的apk文件从Google Play解码已发布的应用程序,但我成功地设法获取其源代码,但我想知道为什么我得到这套代码(附图)?我无法清楚地获得此应用程序的软件包和活动名称.我非常需要它.

在此输入图像描述

是因为封装?我怎样才能获得真正的代码?

java android encapsulation dex2jar

-5
推荐指数
1
解决办法
1516
查看次数

避免将私有字段声明放入c ++标头中

当我成为C#爱好者时,我对C++感到很失望,因为我相信祖先解决了我会比其前任更好地称接口问题.问题是,你无法摆脱类定义中的私有字段声明,因此对它的封装似乎不那么诚实.例如:

// Righteous.h
#ifndef RIGHTEOUS_H
#define RIGHTEOUS_H
class Righteous
{
public:
    void Eat(Food* food);
    void Pray(Orison* orison);
    void Love(People* person); // by heart, not physically
private:
    void WatchHornyVideos(); // oops...
    void DoSomethingIllegal(); // hope people will never come here
    void DenyGodExistance(); // else I will probably see Him soon
}
#endif
Run Code Online (Sandbox Code Playgroud)

甚至C可以更好地处理隐藏实现任务,因为您可以隐藏.c文件中的函数和字段,将它们编译为.lib部署标题和库,而不会泄露您的脏密码.

C#元类信息很不错,但现在使用文本编辑器(如记事本或emacs)提取类定义并不方便.此外,C#反射工具允许任何人完全反编译.NET程序集,因此部署程序集是不安全的,甚至是模糊的.

在回答这个问题时,我想看看从第97版到现代版的C++标准是如何解决的.

c# c++ encapsulation

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

标签 统计

encapsulation ×4

class ×2

java ×2

android ×1

c# ×1

c++ ×1

dex2jar ×1

python ×1