[Java] 객체지향개념 - 패키지, 클래스, import, 제어자

miyeon·2023년 3월 19일
0

Java

목록 보기
7/10
post-thumbnail

패키지

서로 관련된 클래스의 묶음

  • 클래스의 실제 이름은 패키지를 포함 (예: java.lang.String)
  • 패키지는 소스파일의 첫번쨰 문장으로 단 한번 선언
  • 같은 소스파일 내의 클래스들은 같은 패키지에 속한다.
  • 패키지 선언이 없으면 이름없는(unnamed) 패키지에 속한다. (default package)


import문

다른 패키지에 있는 클래스를 사용할 때 사용하면 패키지 이름을 생략할 수 있게 해준다. (컴파일러에게 클래스가 속한 패키지를 알려준다.)

  • import문을 사용하면 클래스를 사용할 때 패키지 이름을 생략할 수 있다.
  • java.lang 패키지(기본 패키지)의 클래스는 import하지않고 사용할 수 있다.
  • import문은 컴파일시 처리되므로 프로그램 성능엔 영향 없음.
  • 이름이 같은 클래스가 속한 두 패키지를 import할 때 클래스 앞에 패키지명을 붙여줘야 함.

선언

import 패키지명.클래스명;
import 패키지명.*; ( * : 모든 클래스를 의미)
ctrl+shift+o : 이클립스가 자동 생성

위치

패키지문과 클래스문 사이


static import문

static멤버(static변수, static메서드)를 사용할 때 클래스 이름을 생략할 수 있게 해준다.

예시

  • import static java.lang.System.out; 👉 System.out을 out만으로 참조 가능
  • import static java.lang.Math.*; 👉 Math클래스의 모든 static멤버를 Math 생략하고 참조가능

💡 클래스 이름이 있어야 명확히 알아보기 좋으므로, 꼭 필요할 때만 static import 사용


제어자(modifier)

클래스와 클래스 멤버(멤버변수, 메서드)에 부가적인 의미 부여


접근 제어자(access modifier)

  • 하나의 대상에 한가지만 사용 가능
  • 접근 권한 제한
  1. public : 접근 제한이 전혀 없다.
  2. protected : 같은 패키지 내 + (다른 패키지의)자손클래스 에서 접근 가능
  3. (default) : 같은 패키지 내에서만 접근 가능
  4. private : 같은 클래스 내에서만 접근 가능
  • 클래스에 붙일 수 있는 접근 제어자 : public, (default)

public class

  • 하나의 패키지 안에 하나만 존재해야 한다.
  • public class의 이름과 소스파일의 이름이 일치해야한다.

💡접근 제어자를 통해 객체의 캡슐화 구현

캡슐화 란?

객체 즉, 클래스의 내부 변수와 메서드를 하나로 패키징 하는 특징
객체의 응집도와 독립성을 높여 객체의 모듈화를 지향한다.

1) 외부로부터 데이터를 보호
2) 외부에는 불필요한, 내부적으로만 사용되는 부분을 감춤(은닉화)
👉 접근 제어자로 외부 접근은 막고, 메서드로 접근 가능



그 외 제어자

  • 하나의 대상에 여러 제어자를 같이 사용 가능 (순서 상관 없음)
  • 대상의 특성(의미)을 부여해 줌
  • static, final, abstract, native, transient, syncronized, volatile, strictfp

1. static - 클래스의, 공통적인

1) 멤버 변수

  • 모든 인스턴스에 공통으로 사용되는 변수에 static을 붙이면 클래스 변수가 된다.
  • 클래스 변수는 인스턴스 생성없이 사용 가능
  • 클래스가 메모리에 로드될 때 생성

2) 메서드

  • iv를 사용하지 않는 메서드
  • 인스턴스 생성없이 호출 가능, 인스턴스 멤버(iv, 인스턴스 메서드) 사용 불가

2. final - 마지막의, 변경될 수 없는

1) 클래스

  • 변경될 수 없는 클래스
    👉 확장될 수 없는 클래스가 된다. 다른 클래스의 조상이 될 수 없다.
  • 예 ) String(보안상의 이유로), Math

2) 메서드

  • 변경될 수 없는 메서드
    👉 오버라이딩으로 재정의 될 수 없다.

3) 변수

  • 변경될 수 없는 변수
    👉 상수가 된다. (상수는 한 번만 값을 저장 가능한 변수. 즉, 값을 변경할 수 없다.)

3) abstract - 추상의, 미완성의

1) 클래스

  • 추상메서드를 포함한 클래스
  • 추상클래스의 인스턴스 생성 불가 (∵ 미완성의 클래스이기 때문)

2) 메서드

  • 구현부 { } 가 없는 메서드

참고 📑

profile
내가 보려고 기록하는 블로그

0개의 댓글