2009-06-14 111 views
0

add和GetContentPane是方法嵌套方法

此代码是否访问方法中的方法?这段代码做了什么?

frame.getContentPane()。add(BorderLayout.SOUTH,b);

回答

3

一个方法可以返回一个对象。你可以在该对象上调用一个方法。

有些语言支持本地功能。但那些从外面看不到。

1

getContentPane()返回一个Container,add是Container类的方法之一。

因此,通过执行frame.getContentPane(),您得到由它返回的Container对象,然后调用该对象的add方法。

1
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(); 
4

在所示的代码,它不是一个“嵌套方法”,但正被调用对从其他方法返回对象的方法。 (只是为了您的信息,Java编程语言,没有一个嵌套的方法的概念。)

以下行:

f.getContentPane().add(component); 

等同于:

Container c = f.getContentPane(); 
c.add(component); 

而不是将两条语句分成两行,第一个例子在一行中执行。

从概念上讲,这是怎么回事:

  1. f.getContentPane方法返回一个Container
  2. 在返回的Container上调用add方法。

它可以帮助有一定的视觉效果:

 
f.getContentPane().add(component); 
|________________| 
     L returns a Container object. 

[Container object].add(component); 
|________________________________| 
     L adds "component" to the Container. 

这是不是太不像替代数学是如何工作的 - 表达式的结果来继续计算表达式:

 
(8 * 2) + 4 
|_____| 
    L 8 * 2 = 16. Let's substitute that. 

16 + 4 
|____| 
    L 16 + 4 = 20. Let's substitute that. 

20 -- Result.