所以,我确实理解一个类可以有属性和方法。
1)如果一个类有一个方法但没有属性会有可能吗? (这似乎是不可能的,在我看来,它打败了创建课程的目的)
2)如果一个具有属性但没有方法的类是否可能? (这似乎有可能)
非常感谢!
答案 0 :(得分:4)
没有属性(带方法)和没有操作的类(带属性)的类都是可能且合法的,但是很少见。 类密码化意味着您不应直接访问类属性。但是,您可能有一个用于存储数据的类(仅限属性),另一个用于管理该数据(仅限操作)。 另请注意,您的模型可能不会显示属性或操作(甚至两者),即使它们存在于类中。
答案 1 :(得分:4)
1)是的,你有时可以在实用程序类中看到它
class MyUtils {
public int add(int a, int b) {
return a + b;
}
}
完全是另一个问题是多么有用,但建模时没有问题。
另一种情况是接口(有时表示为抽象类),其中没有允许的属性(或更一般地说是状态),只有方法或方法原型/头。
2)是的,这在贫血模型中很常见,其中一些类仅作为数据持有者;因为在图中显示访问器方法不是一个好习惯,所以你可能只看到属性,而不是方法;或者如果属性是公共的,并且不需要访问器,例如C ++结构。
同样在设计模型中,您很少看到任何方法,因为您关注的是类之间的关系,而不是它们的实现行为。
答案 2 :(得分:0)
带有方法但没有字段的类通常用作实用程序类。例如,您有几个函数可以对文本文件进行一些编辑。创建一个EditationsUtilities类,它只有编辑方法。有些人认为实践邪恶,但它被广泛使用。 Utility classes are evil? Utility classes are evil?
带有字段和没有方法的类 - 它们被称为结构。仍然是 - 在C中。例如,你有一个Point类,它只有两个字段:x和y。如今这类课程被认为是不好的风格,但仍然被广泛使用。他们说如果将x和y声明为私有,并且将为它们制作getter和setters方法会更好。有趣的是,有些人认为吸气者/制定者是邪恶的。 http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html
在某些语言中,字段,属性和属性之间存在差异,而某些语言必须具有getter / setter。在这些情况下,如果没有方法,则类不能具有属性,因为属性(不是字段!)必须具有getter和/或setter。
在UML(类图)中,当您开始考虑类时,可以绘制一个只有空类矩形的图。所以,显然他们不会有领域或方法。但那只是暂时的。在代码中,如果没有字段和方法,则不会有类。
所以,请使用它,因为它对您来说很方便。您还不能感觉到,SW的组织方式更好。