java - 导入包并使用实例变量

标签 java variables instance package

我有两个关于 Java 的非常基本的问题:

首先,为什么导入 java.awt.* 不会同时导入 java.awt.geom.*? java.awt.geom 中的所有内容不都在 java.awt 中吗?从包的名称来看,我认为是这样。

其次,我的教授告诉我,对于这个矩形生成器项目,直接访问实例变量是不好的,我应该使用访问器方法。这是为什么?这只是惯例吗?例如:

Rectangle rectangle = new Rectangle(1, 2, 3, 4);

int tallness = rectangle.height; //"bad"

int tallness = rectangle.getHeight(); //"good"

根据我的理解,这两者都是有效的并且做完全相同的事情。唯一的区别是前者感觉更快。

此外,为什么访问器在该网站的拼写检查器中显示为拼写错误? (或者也许是 Chrome 的拼写检查器)

最佳答案

First of all, why is it that importing java.awt.* doesn't also import java.awt.geom.*? Isn't everything within java.awt.geom inside of java.awt?

没有。

要获取geom包的所有类,您必须编写java.awt.geom.*

my professor told me for this rectangle maker project thing that accessing the instance variables directly was bad and that I should use the accessor method instead.

是的,你的教授是正确的。

原因是数据封装,

  • 限制对某些对象的访问的语言机制 组件。
  • 一种语言结构,有助于将数据与 对该数据进行操作的方法(或其他函数)。

了解更多关于Encapsulation的信息

关于java - 导入包并使用实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19019422/

相关文章:

java - 如何将 ASCII 值映射到适当的键码?

java - 在子类继承的 AbstractMap.SimpleEntry 上实现新接口(interface)?

mysql - codeigniter 和 mysql 用户定义的变量不起作用

python - 使用 __new__ 覆盖子类中的 __init__

java - AWS lambda : How to call lambda function from simple java class

java - 在android中定义起点?

C++ - 我是否必须为每个函数重新计算私有(private)变量方程?

Javascript 公共(public)/私有(private)变量

google-app-engine - Google AppEngine 服务器实例时钟同步

c# - NullReferenceException 未处理,对象引用未设置为对象的实例