Java

super, super(), package, import문

레이코딩 2022. 9. 30. 12:53

출처 - 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());