2009-06-14 6 views
0

add 및 GetContentPane은 메서드입니다.중첩 된 메서드

이 코드는 메서드의 메서드에 액세스합니까? 이 코드는 무엇을합니까?

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

답변

3

메서드는 개체를 반환 할 수 있습니다. 그리고 그 객체에 대한 메소드를 호출 할 수 있습니다.

로컬 기능을 지원하는 언어가 있습니다. 그러나 그것들은 바깥에서 보이지 않습니다.

1

getContentPane()은 Container를 반환하고 add는 Container 클래스의 메서드 중 하나입니다.

그래서 frame.getContentPane()을 수행하면 컨테이너 객체가 반환되고 그 객체에 대한 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 프로그램 언어의 중첩 방법의 개념이 없습니다.)

다음 줄 :

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

보다는 :

f.getContentPane().add(component); 

가 동일하다 두 문장을 두 줄로 분리하는 첫 번째 예제에서는 한 줄로 그 문장을 수행합니다.

개념적으로,이 벌어지고있는 것입니다 :

  1. f.getContentPane 방법은 Container을 반환합니다.
  2. add 메서드는 반환 된 Container에서 호출됩니다.

그것은 일부 영상이하는 데 도움이 될 수 있습니다 :

 
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.