gpt4 book ai didi

java - 紧密封装类

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:41 25 4
gpt4 key购买 nike

这是我的作业题:以下哪类不是紧密封装的?

class A
{
private int x;
}
class B
{
private int x;
public void setX(int x)
{
this.x=x;
}
public int getX()
{
return x;
}
}
class C
{
private int x;
private void setX(int x)
{
this.x=x;
}
private int getX()
{
return x;
}
}

我花了一些时间在 coderanch 上搜索,但无法获得所需的东西。谁能帮帮我?

我认为 C 类没有紧密封装;因为方法是私有(private)的。关于 A 类,我觉得它不仅仅是封装的。因为封装的基本定义是“您必须隐藏您的成员并向类用户提供您想要的行为方式”。现在类 A 没有访问器-修改器方法。所以 A 不应该被认为是封装的。我不确定但是。如果我错了,请纠正我。

最佳答案

你的类中是如何定义“紧封装”的?据我从 Google 搜索中得知,没有学术界或行业范围内的定义。

我可以争辩说每个类都封装得很好,或者每个类都封装得很差。为什么客户端会暴露私有(private)变量X的名字?似乎很不幸。为什么 A 类不公开任何功能? C 仅在应该使用它的域中公开一个 getter 是否“正确”?

这个问题只是曲解了封装的概念。您不能通过“封装 validator ”例程运行代码。这是一个人为的设计决定,你说应该暴露的是什么,不应该暴露的是不应该的。从根本上说,这通常要求数据是私有(private)的,但是一个方法应该是公共(public)的还是私有(private)的完全取决于它的实际含义和正在做的事情。

关于java - 紧密封装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11653229/

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