2016-11-26 1 views
-2

기본 질문 일 수 있습니다. 그러나 나는 단지 의심을 분명히하고 싶습니다.System.in은 inputstream 객체와 어떻게 같습니까?

시스템 클래스는 java.lang.Object (java.lang.System)에 있으며, out, err에는 세 개의 필드가 있습니다. 그렇다면 System.in은 InputStream이 java.lang.Object의 Inputstream 객체 인 java.io.Inputstream 객체입니다.

+1

'System.in'은'InputStream'으로 정의 된'in'이라는 시스템의 필드입니다. 필드가 허용 된 유형일 수는 없습니다. –

+0

'String'을 상상해보십시오 ... 'length' 필드가 정수입니다. 클래스의 유형과 클래스 내부의 유형이 일치하지 않아도됩니다. – byxor

+0

기록을 위해 : 답변 중 하나가 도움이 되었다면 고려해보십시오. 그렇다면 그것을 수락하는 것을 고려하십시오! – GhostCat

답변

0

System 클래스의 구현을 살펴보면이 필드는 public final static InputStream in = nullInputStream();입니다.

System.in으로 액세스 할 수있는 정적 초기화 된 InputStream 개체입니다. System.outSystem.err은 유사합니다.

+1

응답에 대해 감사하는 짐승. 우리는 public final static String name = "xxx";를 작성합니다. 여기서 String 객체는 수퍼 클래스 인 Object 클래스에 존재하므로 메서드를 사용할 수 있습니다. 우리는 객체를 확장하는 시스템 클래스에 정적 InputStream을 선언 할 때 InputStream이 Object 클래스에 존재하지 않으므로 의심 할 여지없이 어떻게 InputStream으로 선언 할 수 있을까요? 내가 틀렸다면 나를 바로 잡으세요. –

+1

@NarayanaDasari 귀하의 질문과 의견은 이해하기 어렵습니다. "String 객체가 Object에 있습니다"라는 것은 무엇을 의미합니까? "Inputstream은 Object 클래스에 없습니다". 그게 무슨 뜻 이죠? 당신이 말하는 것은 Java에서는 이해가되지 않습니다. "Object"에는 "String object"또는 "Inputstream" "이 없습니다. –

+0

@Erwin Bolwidt. 고맙습니다. 내 의문을여 셨습니다. 나는 자바 초보자입니다. –

3

자신을 혼란스럽게하는 것 같습니다. 한발 뒤로 물러 설 수 있습니다.

클래스 java.lang.System여러 정적 필드, 그들 중 하나가 in라고 있습니다.

오브젝트는 InputStream 유형의 원시 유형을 제외한 모든 오브젝트가 java.lang.Object의 하위 항목이기 때문에입니다.

그런 의미에서 실제로 here을보고이 모든 용어가 실제로 이라는 것을 알아내는 것이 좋습니다.