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클래스로부터 상속받았기 때문에 위의 메소드들은 다 사용할 수 있다는 의미
'JAVA > 생활코딩 JAVA1 (renewal)' 카테고리의 다른 글
생활코딩 JAVA1. 14.6-8 : 나의 앱 만들기 - 조건문,배열(Array),반복문(Loop) (0) | 2022.01.08 |
---|---|
생활코딩 JAVA1. 14.1-5. 나의 앱 만들기 : 기본기능구현, 변수도입, 입력값 도입&args, 이클립스 유용한 기능 (2) | 2022.01.07 |
생활코딩 JAVA1. 13.3-4. 자바 문서 보는 법 : 클래스, 인스턴스, Constructor 생성자 (0) | 2022.01.05 |
생활코딩 JAVA1. 13.1-2. 자바 문서 보는 법 : API vs UI // 패키지,클래스,변수,메소드 (0) | 2022.01.05 |
생활코딩 JAVA1. 12.4-5. 직접 컴파일하고 실행하기 : 라이브러리 사용 // 입력&출력 (0) | 2022.01.02 |