2011-10-04 5 views
1

가 System.out을에서 변수를 설명해주십시오출력 스트림

밖으로 가끔 가끔 PrintStream 형의 객체

을라고, 심지어 때를 OutputStream 형 의 객체로 불린다 미리 정의 된 변수 인 경우 때때로 PrintWriter 객체에 할당됩니다.

PrintWriter out= response.getWriter(); 

왜냐하면 수퍼 클래스 참조는 그 서브 클래스의 객체에 대한 참조를 할당받을 수 있습니까?

답변

2

수퍼 클래스 참조 변수는 하위 클래스 개체의 참조를 보유 할 수 있습니다. OutputStream은 모두 OutputStream 바이트 클래스의 추상 수퍼 클래스이므로 System.out 필드를 OutputStream 유형으로 말할 수 있습니다.

+0

감사합니다. 사랑스러운 하루! – user961690

1

PrintStream은 OutputStream의 서브 클래스이고 System.out은 PrintStream이므로 실제로 둘 다입니다.

라인 :

PrintWriter out= response.getWriter(); 

가 System.out을 함께 할 수 없다. 코드 줄이 어디서 왔는지는 모르겠다. 시스템과 완전히 독립적 인 out이라는 로컬 변수를 정의하고 있습니다.

+1

'PrintWriter' 라인은 서블릿에서 응답에 직접 쓰는 것이 가능하고'System.out'과 완전히 별개입니다. –

+1

'response' 아마도'javax.servlet.ServletResponse' –

+0

제 실수를 저버린 프로그래머들을 용서해주십시오. PrintWriter out = response.getWriter는 서블릿 코드의 것입니다. System.out은 일반적으로 프로그램에서 사용되기 때문에 "out"은 예약어 여야하므로 다른 방법으로 사용해서는 안됩니다. – user961690

1

내가 아는 한 System.out에서 "out"은 메서드 이름입니다. System.out.print()라고하면 System 클래스와 out() 메서드를 호출합니다. 이 out()은 "System"클래스 객체에 대한 참조를 제공하는 정적 메서드입니다. 따라서 참조를 얻은 후에는 print() 메서드를 호출합니다.

하지만, PrintWriter out = response.getWriter(); 당신은 단지 PrintWriter 클래스의 참조 변수를 만들고있는 중이다. 동료 동료들도 언급했듯이 "System.out"과 "PrintWriter out"은 연결되어 있지 않습니다. 이 두 가지 목적은 두 가지입니다.

내가 틀렸다면 나를 수정하십시오. 감사합니다. .

+0

감사합니다. 그러나 System 클래스에는 아마도 변수 일 수 있습니다. 확인하시기 바랍니다. 사랑스러운 하루! – user961690