728x90

 

JAVA1 - 13.5. 자바 문서 보는 법 - 상속(inheritance)

 

JAVA API 문서

PrintWriter클래스를 만든 사람은 처음부터 만들고 싶지 않아서 Writer클래스에서 상속받아 PrintWriter클래스를 만들었고 Writer클래스를 만든 사람은 마찬가지로 Object클래스를 상속받아 쉽게 Writer클래스를 만든

 

*자바에서는 변수 필드라고 함 (Field = variable)

 

 

이클립스에서 상속관계(hierarchy) 보는 방법

[보기 원하는 클래스 위에 우클릭] - [Open tpye Hierarchy 클릭(F4) ]

 

Object 아래 toString 있고 Writer 있음

Object 아래 상속 Writer 아래 상속 PrintWriter 상속

PrintWriter클래스 쓰면 같은 부모 Object 아래 상속 되었기에, Object 아래있는 다른 클래스인 toString 같이 사용가능

 

 

 

자바의 모든 클래스는 Object클래스를 반드시 상속받음

누군가가 Writer라고 하는 어떤 취지를 가진 클래스를 만드는데 필수이기도 하고

Object기능을 사용하기도해서 Object 상속 받는데 이때 사용하는 키워드가 extends

 

 

, Object 확장(extends)해서 Writer 클래스를 만들었다는

마찬가지로, PrintWriter클래스도 Writer 클래스를 확장(extends)해서 만든

 

 

PrintWriter p1 = new PrintWriter("result 1");
p1.toString()

PrintWriter 인스턴스(P1) 만들고 인스턴스에 .toString()이라고 하게되면

상태에서 toString() 오브젝트에 있다고 하면, 자바가 어떻게 동작하는가?

 - PrintWriter클래스에 toString 있는지 보고 없으면 extends 가리키는 Writer 찾아보고 없으면 extends 가리키는 Object 찾아본다. 없으면 에러가 나고 있으면, toString() 메소드를 실행

 


 

Writer클래스는 String 받는 write클래스( write(String) : void  ) 정의되어 있다

PrintWriter클래스에서도 String 받는 write클래스( write(String) : void  ) 정의되어 있다

 - , Writer클래스에도 write메소드가 있는데 Writer클래스를 상속 받는 PrintWriter클래스에도 write메소드가 있는 . 다시말해, 덮어쓰기(overriding)

 

위의 상태에서 write()메소드는 누구의 write 메소드일까?

 - PrintWriter클래스 write(String) : void 사용하는

 

 

덮어쓰기(Override)?

PrintWriter클래스를 만든 사람이 Writer클래스의 write()메소드가 마음에 들지 않거나 취지에 맞지 않는다면 부모클래스의 메소드를 사용하지않고 자식클래스(자신) write()메소드를 사용하는데, 이를 덮어쓰기(overriding) 한다고한다

 


 

<JAVA API 보는법>

Tree

클래스 상속관계(Hierarchy) 있는

 

자바가 기본적으로 제공하는 표준 라이브러리들이 서로 간에 어떤 상속관계를 가지고 있는지 보여준다.

정점에는 역시 Object. 페이지 상단에 위치

 

 

자바에서 변수를 필드라 부름

필드=변수

위의 Fields Summary 의미

위의 lock이라고 하는 변수(필드) Writer()클래스에 정의되어있고 상속받아서 PrintWriter() lock이라는 필드(변수) 사용할 있다는 의미

 

Object클래스로부터 상속받았기 때문에 위의 메소드들은 사용할 있다는 의미

 

 

 

728x90
반응형

+ Recent posts