반응형
1. 자바의 API 문서 보는 법
- 자바는 jre 시스템 라이브러리를 이용해 클래스를 만든다.
- jre 시스템 라이브러리를 설명해주는 API 문서를 이용하자
- module >> package >> class >> Field + Method + Constructor
- module : 지금은 java.base만 사용 가능
- module >> java.lang package: 일반적으로 프로그램만들 때 기본적으로 사용하는 클래스들의 모임
- module >> package >> Math클래스, String클래스 , System클래스 ...class (module >> package >>class 순서대로으로 접근 가능, jre 시스템 라이브러리클래스이기 때문에 우리가 사용가능했던 것)
- class 내 요소들 : 필드의 목록/설명 + 메소드의 목록/설명 + 생성자의 목록/설명들이 나옴
1) private은 자바 API문서에서 볼 수 없다!
- 자바 API문서에서 보여지는 것은 public이라고 볼 수 있음!!
- 그렇게 때문에 우리가 클래스를 가져다가 이용할 수 있었던 것!!
- 보여지지 않으면 은닉화시켰다고 볼 수 있을 것이다!
ex) 생성자를 일부러 은닉화 시킨 Math클래스
- 예를 들어 java.base >> java.lang >> Math클래스의 문서에는 생성자가 없다.
- 그 이유는 Math클래스의 생성자는 접근지정자가 private로 설정되어있기 때문이다.
- 즉, 생성자를 생성할 수 없다는 것이고 객체 생성 또한 불가능하다!
new Math math = new Math(); //error
//The constructor Math is not visible.
그렇다면 우리가 어떻게 Math클래스를 사용할 수 있었던 것일까?
- 그 이유는 Math 클래스가 제공해주는 필드와 메소드는 static이기 때문이다.
- static에 로드되는 것들은 모든 영역에서 사용가능하다!
- 따라서 Math클래스를 사용할 때는 다음과 같이 클래스로 접근하면 된다.
Math.abs();
Math.PI;
Math클래스를 정리하자면
- Math클래스: static 필드, static 메소드, private생성자로 구성됨!
- Math클래스는 생성자를 생성할 수 없기 때문에 객체를 만들 수 없다
- 그래서 우리가 Math클래스를 사용할 때 객체를 안만들고 사용하는 것임
- 그러나 static 키워드 덕분에 Math클래스가 가진 필드와 메소드에 접근할 수 있음
2) 생성자가 은닉화된 클래스들은 꽤 많다!
- System 클래스 : System.in , System.out
- Runtime 클래스
- 생성자가 은닉화되어있음
- 그런데 메소드도 static이 아님.. 즉 호출할 방법이 없음
- 그렇다면 왜 선언 되어있을까?
- 유일한 static Runtime 메소드 : runtime객체를 반환하는 메소드 (즉, 이 메소드를 호출하면 객체를 반환해주는 것임)
- 그런데 메소드를 호출할 때마다 매번 객체를 새로운 객체를 만들어 반환해주는 것이 아니라, 똑같은 객체 하나만을 계속 반환해줌 (= 싱글톤 클래스) 뒤에 가서 한번 더 이야기하겠다!
3) 검색의 속도 : int(훨씬 빠름) > String
- 계산을 안하는 것(비숫자형)은 String으로 만드는 것이 맞지만 검색 속도향상을 위해 int로 만드는 경우 있음 - ex. 학번
반응형
'java > oop' 카테고리의 다른 글
[oop] 11. 학생정보를 저장 후 출력하는 프로그램(StudentApp) (1) | 2024.04.18 |
---|---|
[oop] 10. static(정적) 멤버 VS instance(인스턴스) 멤버 (2) | 2024.04.18 |
[oop] 8. 자바는 프로토타입클래스이다. (MemberApp) with JVM설명 (0) | 2024.04.17 |
[oop] 7. VO(Value Object)클래스 (0) | 2024.04.16 |
[oop] 6. this 키워드의 개념 (0) | 2024.04.16 |