super, super(), package, import문
출처 - Java의 정석 기초편 (남궁 성)
1. 참조변수 super
- super 는 조상 멤버와 자신 멤버 구별시 사용
≒ this 는 지역 변수와 인스턴스 변수 구별시 사용
class Ex7_2 {
public static void main(String args[]) {
child c = new child();
c.method();
}
}
class Parent { int x = 10; } // super.x
class Child extends Parent {
int x = 20; // this.x
void method() {
System.out.println("x=" + x); // x=20 가까운 쪽
System.out.println("this.x=" + this.x); // this.x=20
System.out.println("super.x=" + super.x); // super.x=10
}
}
2. 조상의 생성자 super()
- 조상의 생성자 호출시 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화 바람직 (생성자와 초기화 블럭은 상속되지 않음)
- 반드시 생성자의 첫 줄에 생성자를 호출해야 함, super(), this()
≠ 생성자 this() 는 같은 클래스의 다른 생성자 호출시 사용
≠ 참조변수 super 와 관계 없음
class Point {
int x, y;
Point(int x, int y) {
this.x = x; // iv 초기화
this.y = y;
}
}
class Point3D extends Pooint {
int z;
Point3D(int x, int y, int z) {
super(x, y); // 조상 클래스의 생성자 Point(int x, int y) 호출
this.z = z; // 자신의 멤버 초기화
}
}
3. 패키지
- 패키지란 서로 관련된 클래스 묶음
- 클래스 실제 이름(full name): java.lang.String
- 패키지는 소스파일 첫 번째 문장으로 단 한 번 선언
- 같은 소스파일의 클래스들은 모두 가은 패키지에 속함
- 패키지 선언이 없으면 자동적으로 '이름 없는 패키지(unnamed package)'에 속함
package 패키지명; // 패키지 선언 (소문자 원칙, 대문자 허용)
4. 클래스 패스(classpath)
- 클래스 파일(*.class)의 위치를 알려주는 경로
- 환경변수에 패키지 경로 등록해야 함
5. import문
- 클래스의 패키지명 생략 가능
- 컴파일러에게 클래스가 속한 패키지 정보 제공
- java.lang 기본 패키지의 클래스는 import 하지 않고 사용 가능 (String, Object, System, Thread)
- import문은 package문과 클래스 선언문 사이에 위치
import 패키지명.클래스명; // 이클립스 단축키 (ctrl + shift + O)
또는
import 패키지명.*; // 모든 클래스
6. static import문
- static멤버를 호출할 때 클래스명 생략 가능
import static java.lang.Integer.*; // Integer클래스의 모든 static멤버(변수, 메서드)
import static java.lang.Math.random; // Math.random()만 괄호 안붙임
import static java.lang.System.out; // out만으로 참조
System.out.println(Math.random()); ↔ out.println(raandom());