【发布时间】:2009-06-14 21:15:43
【问题描述】:
add 和 GetContentPane 是方法
此代码是否访问方法中的方法?这段代码有什么作用?
frame.getContentPane().add(BorderLayout.SOUTH, b);
【问题讨论】:
add 和 GetContentPane 是方法
此代码是否访问方法中的方法?这段代码有什么作用?
frame.getContentPane().add(BorderLayout.SOUTH, b);
【问题讨论】:
在显示的代码中,它不是“嵌套方法”,而是在从另一个方法返回的对象上调用的方法。 (仅供参考,在 Java 编程语言中,没有嵌套方法的概念。)
下面一行:
f.getContentPane().add(component);
相当于:
Container c = f.getContentPane();
c.add(component);
第一个示例不是将两个语句分成两行,而是在一行中执行。
从概念上讲,这就是正在发生的事情:
f.getContentPane 方法返回一个Container。Container 上调用add 方法。有一些视觉效果可能会有所帮助:
f.getContentPane().add(组件); |________________| L 返回一个 Container 对象。 [容器对象].add(component); |________________________________| l 将“组件”添加到容器中。这与数学中替换的工作方式并无太大不同——表达式的结果用于继续计算表达式:
(8 * 2) + 4 |_____| L 8 * 2 = 16。让我们替换它。 16 + 4 |____| L 16 + 4 = 20。让我们替换它。 20 -- 结果。【讨论】:
方法可以返回一个对象。您可以在该对象上调用方法。
有些语言支持本地函数。但从外面看不到。
【讨论】:
getContentPane()返回一个Container,add是Container类的方法之一。
因此,通过执行 frame.getContentPane(),您将获得由它返回的 Container 对象,然后为该对象调用 add 方法。
【讨论】:
public class A {
public A f1() {
//Do something.
return this;
}
public A f2() {
//Do something.
return this;
}
然后:
A var = new A();
var.f1().f2().f1();
【讨论】: