当前位置: 首页 > 知识库问答 >
问题:

在OOP中,何时对类字段使用公共修饰符?[闭门]

芮明知
2023-03-14

当使用面向对象语言(如C#或Java)编程时,是否有一种好的情况,在类中声明一个公共字段实际上是有效的(我自己总是使用一个属性来使类的用户不依赖数据并支持数据保护)?否则,例如,C#允许你这样做,这感觉很奇怪。

共有1个答案

齐阳
2023-03-14

根据C#编码惯例,公共字段应谨慎使用:

// A public field, these should be used sparingly
public bool IsValid;

为什么?我想是因为:

  • 可由该类的任何其他用户编辑
  • 如果您想给字段添加一些逻辑,那么您需要创建属性而不是字段。通过这样做,你将打破课堂合同
  • 不可能重写变量

但是,有一种情况,当你需要有字段@VGR说:

public const string foo = "";
 类似资料:
  • 当使用面向对象语言(如C#或Java)编程时,是否有一种好的情况,在类中声明一个公共字段实际上是有效的(我自己总是使用一个属性来使类的用户不依赖数据并支持数据保护)?否则,例如,C#允许你这样做,这感觉很奇怪。

  • 我想创建一个用户定义的“元音”字符类,该类将匹配任何字面英语元音字母(a、e、I、o、u),以及这些字母中的任何一个与任何可能的变音符号相匹配:ắ ḗú̱åų̄ẹ́等。 这就是我试图做的,但没有用:

  • 问题内容: 在Java中,有一种做法是声明每个变量(局部变量或类),如果参数确实存在,则声明参数final。 尽管这使代码更加冗长,但是这有助于简化代码的读取/抓取,并且由于意图被明确标记,因此还可以防止错误。 您对此有何想法,您会怎么做? 问题答案: 我认为这都与良好的编码风格有关。当然,你可以编写出色而健壮的程序,而无需在任何地方使用很多修饰符,但是当你考虑一下时… 将所有不应该改变的东西加进

  • 问题内容: 我阅读了Apple关于Swift 3中访问修饰符的参考。我也阅读了关于stackoverflow的内容,但是我没有得到询问者的答案。据我正确理解,有四个级别: 公开,公开 内部 文件私有 私人的 我创建了自己的方案,以了解所有这些修饰符之间的区别,并将其上传到此处。如您所见,“公共”和“内部”修饰符之间没有区别。但是,它们处于不同的级别。任何想法将不胜感激! 问题答案: 您的图表不正确

  • 我想如果一个类被声明为public,它可以从任何地方访问。但是为什么eclipse称之为错误呢?

  • C++ 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。 下面列出了数据类型修饰符: signed unsigned long short 修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。 修饰符 signed