gpt4 book ai didi

c# - 关于 Java 和 C# 中访问说明符的混淆

转载 作者:搜寻专家 更新时间:2023-10-31 20:29:47 27 4
gpt4 key购买 nike

我正在比较 Java 和 C# 中的访问修饰符。我想在 Java 中找到 C# 的 protected internal 的替代方案。但我注意到 protected 修饰符在两种语言中是不同的( C#Java )。 Java 中的 protected 等同于 C# 的 protected internal,因为成员也可以在同一个包中访问。

我有两个问题

  • 为什么他们在 Java 和 C# 中为相同的修饰符创建了不同的含义?
  • 如何在 Java 中保护 C#(访问仅限于包含类或从包含类派生的类型。)?

最佳答案

Why have they created different meanings to same modifier in Java and C#?

必须在简单性和精确指定不同访问权限的能力之间做出选择。 Java 的创建者和(后来)C# 的创建者做出了不同的选择。

How can I have protected of C# (Access is limited to the containing class or types derived from the containing class.) in Java?

你不能。 Java 在这一点上更受限制。

但是您可能应该限制对 protected 关键字的使用,因为在这两种情况下,它都意味着违反了一般封装原则。这种用法有时很有用,因为太严格的语言可能意味着太多无用的代码,但要注意不要制作过于束缚且难以更改和维护的东西。将对内部字段或方法的访问权授予重写类通常意味着您有一个沉重的层次结构和太多的实现耦合(为了可维护性,更喜欢组合而不是层次结构)。

请注意,没有任何访问控制修饰符声明的变量或方法可用于同一包中的任何其他类。在我看来,这比允许任何包的子类访问更明智。

Here's the complete grid :

enter image description here

关于c# - 关于 Java 和 C# 中访问说明符的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com