下一个问题是,为什么我们在编写程序时需要对象?当您可以添加静态方法时,为什么要创建单独的东西?谷歌搜索了一下,我遇到了一个例子——商店里的产品,有一个 Product 类和这个类的对象——更具体地描述了产品。但是,如果您可以创建多个 Product 后代类,为什么要创建 Product 类的单独对象,例如,Juice 扩展 Product,AppleJuice 扩展 Juice 等等,直接在类中编写细微差别。提前致谢
下一个问题是,为什么我们在编写程序时需要对象?当您可以添加静态方法时,为什么要创建单独的东西?谷歌搜索了一下,我遇到了一个例子——商店里的产品,有一个 Product 类和这个类的对象——更具体地描述了产品。但是,如果您可以创建多个 Product 后代类,为什么要创建 Product 类的单独对象,例如,Juice 扩展 Product,AppleJuice 扩展 Juice 等等,直接在类中编写细微差别。提前致谢
一个典型的例子是 Car, (car) 类,它具有制造商、颜色、门数、油箱容量、油箱中的汽油量、每 100 公里消耗量、速度等特性。方法的示例可以是“加油”或“将这么多升的水倒入油箱”(通常是一个很好的例子,因为当油箱容量超出时它可以返回异常),结果对象实例将发生变化“油箱中的汽油量”属性
让我们先来看看类和类的实例之间的区别。一个班级就像一辆“通用汽车”。一个实例是“特定汽车”——一辆小型梅赛德斯-coupe 520 车型,天蓝色。
OOP 进一步的一切都来自于编程和解决实际问题的实践。事实证明,在很多情况下您需要创建具有类似功能的类。然后使用继承、组合等。在我看来,有一篇关于这个主题的优秀文章——有人可能会说,这是“对整个 OOP 的缩影描述”。
对 OOP 方法的批评几乎与方法本身一样古老。“你需要一根香蕉,但你有一只拿着香蕉的大猩猩,整个丛林都可以启动”这句话已经成为经典。(在我看来,这是 Erlang 语言的创造者 Joe Armstrong 的话)。
我喜欢 OOP 术语已经进入小说:在微软的奴隶中,道格拉斯·科普兰(Douglas Copeland )写道(用他的一个角色的话):“哎呀!” 是一个虚拟的构造函数。一个无底的三维积木盒子,类似于乐高……”
好吧,为了心情-有关该主题的图片:
能。但是,每个班级都会有一个实体。你不能做两个相同的面包。类被设计为某种具有具体性的抽象,仅受类参数本身和一些实现(将类与接口区分开)的限制。
静态方法和属性是一种特殊类型。在销售时,它们的使用被认为是三倍。
因此,如果您只需要一个类的实例,甚至不是调用该语言的类(例如,某种幂等映射器),您可以安全地求助于静态。
总的来说,我同意楼上的答案。但我想以某种方式咀嚼和简化它。