在Java中,我想知道为什么String类的“length”属性不是私有的?根据封装原则,这不是一个坏习惯吗?为什么没有像“getLength()”这样的方法?
PS:对不起我的英语,我还在改进它。
答案 0 :(得分:8)
事实上,它确实是私密的。也许你对length()
方法感到困惑?
答案 1 :(得分:4)
java.lang.String中没有名为“length”的公共属性。有一个公共方法“length()”,但您不能使用它来设置String的长度。可以说他们应该调用length()方法getLength(),但这只是他们做出的选择。
答案 2 :(得分:0)
警告: 切线话题
公共属性本质上不是邪恶的。 Java的问题在于它没有properties,它允许您在开始时暴露内部变量。当您对封装的要求越来越强时,您可以更改类的内部,而不会影响其签名/ API。使用属性,你可以吃蛋糕并吃它,你可以作为变量访问属性,但无法在课外设置/分配它。
Java程序员通过从每个公共面向属性的起始getter和setter创建,无论是否有任何类型的处理,以防万一。我已经看到Java程序员从其他语言开始,有属性做同样的使用getter和setter 的东西。如果您使用其他语言,请不要将JVM的所有误解从JVM的实现细节中带出来。
封装!= getters&& setter方法。
</rant>
答案 3 :(得分:0)
我认为你的意思是数组对象,对吧?
我个人认为,对于那些只是美化结构的类,有(最好是最后的)字段是完全正确的。例如,我宁愿做
public Person {
final String name;
final String surname;
public Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
}
与吸气剂和制定者相同。