当前位置: 首页 > 面试题库 >

Java-包私有类内部的方法可访问性?

谭建章
2023-03-14
问题内容

如果我有一个包私有的Java类(用“ class”声明,而不是“ public
class”),那么将内部方法声明为public或protected或package-
private确实没有区别,对吗?那么我应该使用哪个,或者什么时候该使用呢?我有点困惑。


问题答案:

如果我有一个包私有的Java类(用“ class”声明,而不是“ public
class”),那么将内部方法声明为public或protected或package-private确实没有区别,对吗?

好吧,也许不是马上。但是,如果您随后(或将来)声明了一个从package-private类继承的“ protected”或“
public”类,则原始类成员的可见性 确实很 重要。

正如@kmccoy指出的那样,将类声明为final消除了子类的可能性。

但这实际上只是橱窗装饰。如果随后您确定确实需要创建子类,则只需删除final…,然后回到访问修饰符的选择确实很重要的情况。

海事组织,最重要的是,您应该选择最合适的修饰符……即使现在没有必要。如果没有其他要求,则选择的修饰符应记录您的意图,即抽象边界的位置。



 类似资料:
  • 我在使用reflections api的公共类中的私有类中使用私有方法时遇到问题。下面是一个简化的代码示例: 同样,我希望能够实例化一个类对象,然后从私有类调用。我一直试图通过反射来做到这一点,但我似乎无法超过1级。此外,内部类可能有也可能没有大多数代码似乎使用的构造函数。上面的代码只是框架。 我当前的代码: 我查找了各种方法来获取内部类或私有方法,但找不到在不使用构造函数的情况下将外部对象获取到

  • 问题内容: 我观察到外部类可以访问内部类的私有实例变量。这怎么可能?这是演示相同代码的示例代码: 为什么允许这种行为? 问题答案: 内部类只是一种将真正属于原始外部类的功能完全分开的方法。当你有两个要求时,可以使用它们: 如果是在单独的类中实现的,那么外部类中的某些功能将最为清晰。 即使在单独的类中,该功能也与外部类的工作方式紧密相关。 鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外

  • 这有点涉及Java(Java 8)内类的设计问题。所有示例代码都在我的文本下面 举个例子,假设我有一些机器,它涉及把燃料从一个喷泉泵到某种燃烧器,我可以使用一个叫做OilAPI的外部API来控制它。 我有一个Controller类,它负责完成工作,并决定哪个燃烧器需要从哪个间歇泉获取油,但我不希望使用API的类(如间歇泉和燃烧器)的逻辑泄漏到控制器中(也是因为API仍然会随着时间的推移发生一些变化

  • 问题内容: 这就是我现在正在做的。有没有更好的方法来访问超类? 我正在使用Google Web Toolkit进行编程,但是我认为这确实是一个通用的Java问题。 问题答案: 您可以使用所谓的qualified 。 [JLS 15.8.4。合格的](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8

  • 我知道如何访问私有变量,但我正在尝试测试以下类: ProcessStatusResult: 在我的测试中,我需要在ProcessStatusBody中获取ProcessStatus来验证它,但我不知道如何做到这一点。 有没有一种方法可以使用反射(或其他方法)来访问它,而不必仅仅为了测试而在ProcessStatusResult中添加getter?

  • 问题内容: 有什么方法可以访问Java中的本地内部类的方法。以下代码是我之前尝试过的示例代码。据此,访问该方法的机制是什么? 问题答案: 正如ILikeTau的评论所说,您无法访问在方法中定义的类。您可以在方法之外定义它,但是另一种可能性是定义一个(或抽象类)。这样,代码仍将位于您的方法内部,并且可以访问该方法中定义的变量和参数(如果将整个类移到外面,则无法执行此操作)。就像是: 注意: 未测试