2009-06-14 152 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.