为什么最终类WebView在JavaFX中包含受保护的方法getChildren()?

时间:2014-01-03 16:42:12

标签: java javafx javafx-2 final

WebView class是最终的。它包含受保护的方法getChildren()

如何使用呢?

更新

问题不在于protected adn /或final个关键字,而是关于为什么会这样做?在最终课程中保护成员的原因是什么?

4 个答案:

答案 0 :(得分:1)

protected表示“包和继承访问”,因此同一包中的类可以访问此方法。

编辑:

回答你的编辑:这是因为这个类的设计者希望这个方法只能用于同一个包中的类而没有其他类(因此你不能扩展它,因为它们使它成为最终的)

答案 1 :(得分:0)

当它声明为protected时,仍然在同一个包中实例化WebView类的类可以使用该方法。

您可能认为它无法扩展,因为它是final,无法在课外访问它。是的,这是真的,但在包装中,他们可以。

Modifier    Class   Package Subclass    World
---------------------------------------------
protected   Y      **Y**        Y           N

答案 2 :(得分:0)

如您所知,最终课程无法延期。最终的类不能被子类化。

protected Modifier - 访问:

中的其他类
  • 同一个包
  • 引用它们的类的任何子类(即相同的包不同的包)。

答案 3 :(得分:0)

你不能扩展它,因为它是最终的。

  • 创建Webview类的实例并调用newWebViewInstance.getChildren()
  • 您可以使用相同的Webview包创建一个包,但任何具有正确Java编程语言意识的人都不会这样做。

<强>更新

我不喜欢让最后一堂课的成员/方法受到保护。除非在这种情况下,恕我直言,这是糟糕的编程实践

为何受到保护?

WebView extends javafx.scene.Parent

getAllChildren()javafx.scene.Parent的一种方法,具有受保护的范围。

protected javafx.collections.ObservableList<javafx.scene.Node> getChildren()

我们现在知道Webview是javafx.scene.Parent的子类并覆盖getChildren()。如果它改变范围(默认值比受保护的更严格),则会破坏最重要的合同。

希望现在很清楚。