Java 접근 제어자 및 키워드 사용법

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

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이 적용된 요소의 특징
    1. 클래스의 모든 인스턴스가 공유한다, 이는 static 사용 여부를 판단하는 기준이 된다
    2. 클래스 이름으로 직접 호출 가능하며 인스턴스 이름으로도 호출 가능하지만 클래스 이름 사용이 권장된다
  • 코드 예제:
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 접근 규칙
    • 비정적 멤버 메서드
      • 정적 멤버 변수 접근 가능
      • 비정적 멤버 변수 접근 가능
      • 정적 멤버 메서드 접근 가능
      • 비정적 멤버 메서드 접근 가능
    • 정적 멤버 메서드
      • 정적 멤버 변수 접근 가능
      • 정적 멤버 메서드 접근 가능
    • 한마디로 요약하면:
      • 정적 멤버 메서드는 정적 멤버만 접근 가능하다

태그: java access-modifiers final-keyword static-keyword packages

8월 22일 01:19에 게시됨