java中封装的方法可以做成私有的吗?

问题描述 投票:0回答:3

为了实现封装,我们将成员设置为私有(变量),并使用 getter 和 setter 方法进行数据隐藏,这就是我们实现数据隐藏的方式。那么以同样的方式,我们可以将一个方法设为私有并使用 getter 或 setter 方法访问它吗? (或者还有其他方法吗)

java methods encapsulation
3个回答
1
投票

在Java中,私有方法是具有私有访问修饰符的方法,并且仅限于在定义类中访问,并且在其子类中不可见,因为它们不符合覆盖条件。但是,我们可以在子类中定义一个同名的方法,并且可以在父类中访问。 出于同样的原因,我认为不可能存在 getter 和 setter 方法。


1
投票

当然,你可以将一个方法定义为

private
,这样它就只能(本质上)从同一个类中的其他方法调用。这是一种很常见的做法。例如,我可能提供一个方法
getFoo()
,其中
foo
的实际值不仅仅是一个实例变量,而是使用其他(私有)方法计算得出的东西。对于该类的用户,
getFoo()
返回一些名为“foo”的数据,但它无法看到它来自哪里——无论它是存储的、派生的还是某种组合。


0
投票

在您的场景中,在 Employee 类中拥有公共方法 GetEmployeeDetail() 和私有方法 GetSalary() 可以被视为一种封装形式。 通过将 GetSalary() 设为私有,您可以将与薪资相关的逻辑封装在类中,并通过公共方法仅公开必要的详细信息。

因此,总而言之,在类中拥有封装功能(数据和方法)的方法有助于面向对象编程中的封装。

© www.soinside.com 2019 - 2024. All rights reserved.