gpt4 book ai didi

oop - getAttribute() 方法的意义是什么

转载 作者:行者123 更新时间:2023-12-02 05:25:44 28 4
gpt4 key购买 nike

我正在做一个任务,要求我们为矩形定义一个类并为其配备各种方法,其中两个是 getHeight()getWidth() , 除了 return this.height; 之外不应该做任何事情和 return this.width; .我不明白重点。如果我想访问 widthheight ,我为什么不直接引用 this.width而不是 this.getWidth() ?

最佳答案

要点是:将接口(interface)与实现分离。

属性 getter 和 setter 函数( getWidth()getHeight() )是接口(interface)。实际变量this.widththis.height是执行。

只有接口(interface)对外界很重要,而不是实现。实现应该保持在内部(数据封装)。

在编写类的基本原理时,使用 setter 和 getter 有时感觉像是一种打字练习,但当类及其接口(interface)变得更复杂时,它通常会得到返回。 Eclipse for Java 和 C++ 等一些 IDE 支持为新数据成员生成样板代码。

对于非常简单的类,分离似乎毫无意义,有时会省略 getter 和 setter 并授予直接访问权限。一个例子是 Point2d有成员的类(class)xy .

但是一旦对象变得更复杂,getter 和 setter 就是一个好主意。您可以稍后更改实现而不更改接口(interface)。例如,您可以稍后在对象的宽度发生变化时通知其他实例。

getter 的一个主要应用是实现 只读接口(interface)在某些方面:在这种情况下,只有一个 getter 方法,没有 setter,并且数据元素是私有(private)的。这样可以防止使用类的代码意外更改值。

一些语言支持将类的部分标记为私有(private)的或实现内部的,无论是按位置还是通过使用特殊关键字(如 private)来标记它们。 .

其他语言,如 Python 并没有明确支持这种严格的数据封装,但仍然可以通过按照约定为内部数据成员添加特定前缀或后缀来实现(Python 中的双下划线或单下划线,双下划线甚至会在某种程度上破坏名称)。

关于oop - getAttribute() 方法的意义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17412688/

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