嵌套方法

时间:2009-06-14 21:15:44

标签: java methods

add和GetContentPane是方法

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

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

4 个答案:

答案 0 :(得分:4)

在显示的代码中,它不是“嵌套方法”,而是从另一个方法返回的对象上调用的方法。 (仅供参考,在Java编程语言中,没有嵌套方法的概念。)

以下一行:

f.getContentPane().add(component);

相当于:

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

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

从概念上讲,这是正在发生的事情:

  1. f.getContentPane方法返回Container
  2. 在返回的add上调用Container方法。
  3. 有一些视觉效果可能会有所帮助:

    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.
    

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分: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();