相关疑难解决方法(0)

为什么方法和属性的可见性很重要?

为什么不能让所有方法和属性从任何地方(即public)可以访问?

如果我将属性声明为?你能一个我可以遇到的问题的例子public吗?

php oop encapsulation visibility

43
推荐指数
5
解决办法
2195
查看次数

你什么时候写私人方法,而不是保护?

如果我正在写一个课程,我何时将方法设为私有,而不是保护?换句话说,我怎么能预先知道客户端程序员永远不需要覆盖方法?在某种情况下,它有外部因素,如数据库连接?

oop

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

最好使用私有方法还是受保护的方法?

在我的很多PHP项目中,我最终得到的是具有非公共函数的类,我不打算扩展它们.

最好将这些声明为受保护或私有?

我可以看到两种方式的参数 - 将它们设为私有是一种更为保守的方法,但可以认为如果我希望扩展方法并明确哪些方法由基类扩展,它们可以在以后被保护.

另一方面,使用私有部分反社会,因为它阻止理论上的未来开发人员扩展我的代码而不进行修改?

php oop

33
推荐指数
4
解决办法
5918
查看次数

反射是否破坏了私有方法的思想,因为私有方法可以在类之外访问?

反思是否打破了私人方法的想法?因为可以从类外部访问私有方法吗?(也许我不理解反思的意思或错过别的东西,请告诉我) http://en.wikipedia.org/wiki/Reflection_%28computer_science%29

编辑: 如果relection打破了私有方法的想法 - 我们是否只将私有方法用于程序逻辑而不用于程序安全?

谢谢

php c# java reflection junit

28
推荐指数
7
解决办法
4645
查看次数

Reflection是否打破了封装原则?

好吧,假设我们有一个类定义的类

public class TestClass
{
    private string MyPrivateProperty { get; set; }

    // This is for testing purposes
    public string GetMyProperty()
    {
        return MyPrivateProperty;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我们尝试:

TestClass t = new TestClass { MyPrivateProperty = "test" };
Run Code Online (Sandbox Code Playgroud)

TestClass.MyPrivateProperty is inaccessible due to its protection level正如预期的那样,编译失败.

尝试

TestClass t = new TestClass();
t.MyPrivateProperty = "test";
Run Code Online (Sandbox Code Playgroud)

并使用相同的消息再次编译失败.

一切都很好,直到现在,我们都在期待这一点.

但后来写道:

PropertyInfo aProp = t.GetType().GetProperty(
        "MyPrivateProperty",
        BindingFlags.NonPublic | BindingFlags.Instance);

// This works:
aProp.SetValue(t, "test", null);

// Check
Console.WriteLine(t.GetMyProperty());
Run Code Online (Sandbox Code Playgroud)

在这里,我们设法改变了一个私人领域.

仅使用反射能够改变某个物体的内部状态是不是不正常?

编辑:

感谢到目前为止的回复.对于那些说"你不必使用它"的人:那个班级设计师怎么样,看起来他再也不能承担内部的国家安全了?

c# oop reflection

10
推荐指数
2
解决办法
2264
查看次数

为什么不在PHP中使用'protected'或'private'?

我一直在用的Joomla框架,我注意到,他们使用的公约指定的私人或受保护的方法(他们把下划线" _"方法名前),但他们并没有明确声明任何方法public,private或者protected.为什么是这样?它与便携性有关吗?这些public,private或者protected关键字在旧版本的PHP中不可用吗?

php encapsulation

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

PHP类中的可见性是否重要,为什么?

如您所知,PHP类具有私有,公共和受保护的关键字.我刚刚开始编写类,我想知道PHP5中类可见性的优点是什么.

当然也有缺点......

php visibility private class public

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

是否有必要将方法定义为"公共"?

如果所有方法都是公共的,除非它们被明确定义为其他方法,是否有必要将方法定义为public

php oop public-method

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

PHP保护java风格

我有一些功能需要由管理我的软件的一个共同方面的几个类共享.在Java中,我将所有这些类放在同一个包中,并且通用功能将在辅助类中的受保护方法中.

在PHP中,受保护的方法意味着您只能在子类中使用它,因此我当前的解决方案是使方法受到保护,并使所有需要此方法的类扩展帮助程序类.我当前的解决方案的问题是,事实上你不能继承多个类,所以让我说我需要帮助类,即时通讯...

那么,有没有办法让方法可见性与PHP中的java保护相媲美?如果没有,任何更清洁的方法来解决我的问题?

php oop

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

标签 统计

php ×7

oop ×6

c# ×2

encapsulation ×2

reflection ×2

visibility ×2

class ×1

java ×1

junit ×1

private ×1

public ×1

public-method ×1