1 패키지 관리
- 1.1 패키지 개념
- 패키지는 클래스 파일들을 관리하는 디렉토리 구조이다
- 1.2 패키지 선언 형식
- package 패키지명; (하위 패키지는 점(.)으로 구분)
- 예시: package kr.co.example.project;
- 1.3 패키지 포함 컴파일 및 실행
- 패키지 포함 컴파일: javac –d . 클래스명.java
- 예시: javac -d . kr.co.example.project.AppMain.java
- 패키지 포함 실행: java 패키지명+클래스명
- 예시: java kr.co.example.project.AppMain
- 패키지 포함 컴파일: javac –d . 클래스명.java
2 임포트 기능
- 임포트의 목적
다른 패키지에 있는 클래스를 사용할 때 전체 경로를 매번 작성하면 번거롭기 때문에 Java는 임포트 기능을 제공한다
- 임포트 문법
- 형식: import 패키지명;
- 사용예: import java.util.Random;
- 코드 예제(임포트 미사용 시 Random 객체 생성)
package kr.co.example;
public class SampleClass {
public static void main(String[] args) {
// 1. 임포트 없이 Random 객체 생성
java.util.Random randomGen = new java.util.Random();
}
}
- 코드 예제(임포트 사용 후 Random 객체 생성)
package kr.co.example;
import java.util.Random;
public class SampleClass {
public static void main(String[] args) {
// 2. 임포트 후 Random 객체 생성
Random randomGen = new Random();
}
}
3 접근 제어자
4 final 키워드
- final 키워드의 역할
- final은 최종적인 의미를 가지며 메서드, 변수, 클래스에 적용 가능하다
- final이 클래스, 메서드, 변수에 적용된 결과
- final이 클래스에 적용: 해당 클래스는 상속 불가(자식 클래스 생성 불가, 부모 클래스는 가질 수 있음)
- final이 메서드에 적용: 해당 메서드는 오버라이드 불가
- final이 변수에 적용: 해당 변수는 상수로 지정되어 재할당 불가
5 final과 지역 변수
- 기본 자료형 변수에 final 적용
- 기본 자료형의 실제 값은 변경할 수 없다
- 참조 자료형 변수에 final 적용
- 참조 자료형의 주소값은 변경할 수 없지만 주소 내부의 내용은 변경 가능하다
- 예시:
public static void main(String[] args){ final Person personObj = new Person(25); personObj = new Person(28); // 오류 발생 personObj.setAge(28); // 정상 작동 }
6 static 키워드
- static의 개념
- static은 정적이라는 의미로 멤버 메서드와 멤버 변수를 수정할 수 있다
- static이 적용된 요소의 특징
- 클래스의 모든 인스턴스가 공유한다, 이는 static 사용 여부를 판단하는 기준이 된다
- 클래스 이름으로 직접 호출 가능하며 인스턴스 이름으로도 호출 가능하지만 클래스 이름 사용이 권장된다
- 코드 예제:
class MemberInfo {
public String userName; //사용자 이름
public int userAge; //나이
public static String organization; //기관명 공유 데이터! 따라서 정적으로 설정!
public void displayInfo() {
System.out.println(userName + "," + userAge + "," + organization);
}
}
public class StaticExample {
public static void main(String[] args) {
// 공유 데이터에 값 할당
MemberInfo.organization = "OO대학교";
MemberInfo member1 = new MemberInfo();
member1.userName = "김민수";
member1.userAge = 21;
member1.displayInfo();
MemberInfo member2 = new MemberInfo();
member2.userName = "이영희";
member2.userAge = 23;
member2.displayInfo();
}
}
- static 접근 규칙
- 비정적 멤버 메서드
- 정적 멤버 변수 접근 가능
- 비정적 멤버 변수 접근 가능
- 정적 멤버 메서드 접근 가능
- 비정적 멤버 메서드 접근 가능
- 정적 멤버 메서드
- 정적 멤버 변수 접근 가능
- 정적 멤버 메서드 접근 가능
- 한마디로 요약하면:
- 정적 멤버 메서드는 정적 멤버만 접근 가능하다
- 비정적 멤버 메서드