Programming languages 为什么编程语言不';没有';允许特定类';访问修饰符

Programming languages 为什么编程语言不';没有';允许特定类';访问修饰符,programming-languages,Programming Languages,如今,编程语言有这些众所周知的访问修饰符:private、public、internal和protected。但有时,当我以OOP方式编写程序时,我想我需要一个“特殊”修饰符,可以手动指定我希望允许访问的类 现在我想知道为什么语言设计人员不在编程语言中添加这样的修饰符,可能是因为与OOP概念冲突,或者是因为困难 谢谢你的回答:) p、 很抱歉,如果已经提出了相同的问题。嗯,Scala允许您限制访问C#和VB.Net都有这样的概念,其中指定的程序集可以访问指定程序集的内部成员。这允许您将临时访问权

如今,编程语言有这些众所周知的访问修饰符:private、public、internal和protected。但有时,当我以OOP方式编写程序时,我想我需要一个“特殊”修饰符,可以手动指定我希望允许访问的类

现在我想知道为什么语言设计人员不在编程语言中添加这样的修饰符,可能是因为与OOP概念冲突,或者是因为困难

谢谢你的回答:)


p、 很抱歉,如果已经提出了相同的问题。

嗯,Scala允许您限制访问

C#和VB.Net都有这样的概念,其中指定的程序集可以访问指定程序集的内部成员。这允许您将临时访问权授予特定的调用者,对这一点的检查在编译时完成

只有显式指定为好友的程序集才能访问好友(Visual Basic)或内部(C#)类型和成员。例如,如果程序集B是程序集a的友元,而程序集C引用程序集B,则C无权访问a中的友元(Visual Basic)或内部(C#)类型

事实上,这个特性的合法用途是有限的(至少在这些语言中是如此),除非你喜欢开发难闻的代码

但话虽如此,类定义谁可以调用它的想法几乎违反了OOP的封装和抽象规则。通过允许一个类指定它的调用方是谁,您就允许该类拥有超出其领域的知识,并且您将好的设计抛到了窗外。类可以指定调用方应该如何调用,但不能指定调用方应该调用谁


我希望这有助于个人的观点。我期待着更多的面向学术语言的人的回答。

< P>这正是C++中的修饰语。

只是那是<代码> java < /> >如果您使用另一种编程语言,如
PHP
C#/C
或任何其他不同的语言,该怎么办?@C0dekid.PHP它只适用于ScalaOh,可能其他语言的开发人员必须看看这个,因为这是一个有用的函数:)!谢谢你的回答:)@chester89谢谢。我刚发现。