역할 : 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공한다.
선언 : import 패키지명.클래스명;
import 패키지명.*;
//지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다.
# import java.lang.*;
- 매우 빈번히 사용되는 중요한 클래스들이 속한 패키지라서 모든 소스파일에 묵시적으로 선언하여 따로 import문으로 지정하지 않아도 되도록 하였다.
역할 : 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공한다.
선언 : import 패키지명.클래스명;
import 패키지명.*;
//지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다.
# import java.lang.*;
- 매우 빈번히 사용되는 중요한 클래스들이 속한 패키지라서 모든 소스파일에 묵시적으로 선언하여 따로 import문으로 지정하지 않아도 되도록 하였다.
- 클래스의 묶음
- 클래스 또는 인터페이스를 포함할 수 있다.
- 서로 관련된 클래스 끼리 나누어 클래스를 효과적으로 관리할 수 있다.
- 클래스의 Full Name에는 패키지명을 포함한다.
ex)String - java.lang.String : java.lang패키지에 속한 String 클래스
같은 이름의 클래스라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다.
- 패키지는 물리적으로 하나의 디렉토리이다.
- 하나의 소스파일에 첫번째 문장으로 단 한번의 패키지 선언만을 허용한다.
- 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
(defoalt : '이름없는 패키지(unnamed package)'에 속한다.)
- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.
package com;
public class PackageTest {
public PackageTest() { //생성자
super();
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
super
- 자식클래스에서 부모클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수
- 상속받은 멤버와 자신의 클래스에서 정의된 멤버의 이름이 같을때만 super를 이용해 구별한다.
* this 참조
- static 메서드에서 사용할수 없고 인스턴스(객체)메서드에서만 사용할 수 있다.
- 부모클래스의 메서드를 자식클래스에서 오버라이딩 한 경우에 super를 사용한다.
super()
- 생성자.
- 조상클래스의 생성자를 호출한다.
- 메서드 안에서 사용하자.
Object 클래스를 제외한 모든 클래스의 생성자 첫 줄에서 생성자를 호출해야 한다.
아니면 컴파일러가 자동적으로 super();를 첫줄에 삽입한다.
이유 : 자식 클래스 멤버가 부모클래스의 멤버를 사용할 수도 있으므로 부모의 멤버들이 먼저 초기화 되어 있어야 하기 때문에.
* 생성자의 호출은 Object();까지 호출되어야 끝난다.
멤버변수 - 초기화 하지 않으면 기본값으로 자동 초기화 된다.
지역변수 - 초기화하지 않으면 에러.
멤버변수의 자동초기화 값 - false / NULL / 0
초기화 방법
- 명시적 초기화 : 선언과 동시에 초기화 한다.
- 생성자.
- 초기화 블럭 :
클래스 초기화 블럭은 클래스변수 초기화에 사용하고, 인스턴스 초기화 블럭 앞에 static만 덧붙이면 된다.
인스턴스 초기화 블럭은 인스턴스변수의 초기화에 사용된다.
클래스 내에 블럭({ })을 만들고 그 안에 코드를 작성한다.
생성자와 같이 인스턴스를 생성할 때마다 수행되고 생성자보다 먼저 수행된다.
- 인스턴스(객체)가 생성될때 호출되는 인스턴스 초기화 메서드.
┌ 생성자의 이름은 클래스의 이름과 같아야 한다.
└ 생성자는 리턴 값이 없다.
- 클래스에 생성자를 정의하지 않으면 컴파일러가 기본생성자를 제공한다.
- 기본생성자가 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을때 뿐이다.
this
- 인스턴스멤버만 사용할수 있다.
- 인스턴스(객체) 자신을 가리키는 참조변수, 인스턴스(객체)의 주소가 저장되어 있다.
- 생성자가 같은 클래스의 다른 생성자를 호출할때 사용한다.
- 생성자의 이름으로 클래스 이름 대신 this를 사용한다.
- 한 생성자에서 다른 생성자를 호출할때 반드시 첫 줄에서 호출한다.
- 이유 : 생성자 내에서 초기화 작업도중에 다른 생성자를 호출하게 되면
호출된 다른 생성자 내에서도 멤버변수들의 값을 초기화 할 것이므로
다른 생성자를 호출하기 이전의 초기화 작업이 무의미해질 수 있다.
- this() : 메서드 안에서 사용하자.