Doit ! Java_4

박다현·2023년 9월 24일
0

likelion

목록 보기
22/23
post-thumbnail

01 클래스 외부 구성 요소


1.1 패키지와 임포트

1.1.1 package / import

  • package
    비슷한 목적으로 생성된 클래스 파일들을 한 곳에 모아 둔 폴더
프로그램을 작성하다 보면 각각의 목적에 따라 여러 개의 클래스 파일 ( 네트워크 처리를 위한 클래스 10개, GUI 처리를 위한 클래스 8개 등)들이 생김 
: 이렇게 동일한 목적으로 만들어진 클래스들을 1개의 공간(폴더)에 묶어 관리하기 위해 사용하는 것 
# 패키지를 생성하지 않았을 때

// package 구문 미포함

public class Packaage Test1{

}


# 패키지를 생성했을 때

package mypack.test; // package 구문 포함

public class PackaTest2 {

}
  • import
    다른 패키지 내의 클래스를 사용하기 위한 문법 요소
    소스 코드 상에서 패키지 구문의 다음 줄에 위치함

  • 다른 패키지의 클래스 사용 방법 2가지

방법 1. 클래스의 풀네임 사용

패키지명.클래스명

방법 2. import 사용

import 패키지명.클래스명

실제로 프로그램을 작성하다 보면 자신이 작성한 클래스보다 자바가 제공하는 클래스를 훨씬 더 많이 사용

1.2 외부 클래스

public 클래스의 외부에 추가로 정의한 클래스
1개의 소스 파일 안에서 public 클래스를 제외한 모든 클래스를 의미

다른 패키지에서 import 하기 위해서는 public 이 붙어있는 class만 import 가능


02 자바 제어자 1


2.1 접근 지정자

자바 제어자 modifier는 클래스, 필드, 메서드, 생성자 등에게 어떠한 특징을 부여하는 문법 요소

2.1.1 멤버 및 생성자의 접근 지정자

  • 접근 지정자
    자바 제어자의 한 종류로, 클래스, 멤버, 생성자 앞에 위치 가능, 사용 범위 정의 가능
public, protected, default (package), private 

# 접근 범위
public > protected > default > private

- private : 자신의 클래스 내부에서만 사용 가능한 접근 지정자
- default : 같은 패키지 안의 모든 클래스에서 사용할 수 있는 접근 지정자
- protected 
  : default보다는 넓은 범위의 접근 지정자이므로 같은 패키지의 모든 클래스에서 사용할 수 있음
  * default 범위 + 다른 패키지의 자식 클래스 : 다른 패키지 안에서 사용 가능
- public : 동일 패키지의 모든 클래스에서는 물론, 다른 패키지의 모든 클래스에도 접근 가능

# 클래스의 접근 지정자 : public, default만 사용 가능

2.1.2 클래스 접근 지정자와 생성자 접근 지정자의 연관성

클래스에 생성자가 없을 때 컴파일러는 기본 생성자를 자동으로 추가
이 때 자동으로 추가되는 생성자의 접근 지정자는 클래스의 접근 지정자에 따라 결정

클래스 = public : 다른 패키지에서 임포트 할 수 있는 것, 자동으로 추가되는 생성자 = public
생성자 = public : 생성자를 호출해 객체를 생성할 수 있는 것, 자동으로 추가되는 생성자 = default

2.2 static 제어자

클래스의 멤버에 사용하는 제어자

  • 인스턴스 멤버 instance member
    객체 안에 있을 때 사용할 수 있는 상태가 되는 멤버
    멤버 앞에 static이 붙어 있지 않은 것

  • 정적 멤버 static member
    앞에 static이 붙어있는 멤버

클래스명.멤버명

// 객체 생성 없이 바로 사용 가능

2.2.1 인스턴스 / 정적 필드 & 인스턴스 / 정적 메서드

  • 인스턴스 필드의 활용 방법
    객체 생성한 후 사용 가능
객체 생성 후, '참조 변수명.인스턴스 필드명'

* 저장 공간이 힙 메모리에 위치하므로 반드시 해당 저장 공간에 값을 읽거나 쓰기 위해서는 참조 변수명 사용해야 함
  • static 필드의 활용 방법
    방법 1. 객체 생성하지 않고 바로 사용 가능
    방법 2. 객체를 생성한 후 사용 (권장 X)

    정적 필드는 객체 간 공유 변수의 성질 존재

인스턴스 메서드와 정적 메서드도 각각의 필드 성질과 동일


2.2.2 정적 초기화 블록

정적 필드는 객체의 생성 이전에도 사용할 수 있어야 하므로 생성자가 호출되지 않은 상태에서도 초기화 할 수 있어야 함

but 생성자에서는 정적 필드를 초기화 할 수 없음
: 정적 필드를 초기화 하기 위한 문법을 별도로 제공하는 것

static {
	// 클래스가 메모리에 로딩될 때 실행되는 내용
}

// 일반적으로 인스턴스 필드의 초기화는 객체가 만들어지는 시점에서 이뤄짐
객체가 생성자에서 만들어지므로 생성자 내에서 인스턴스 필드를 초기화하는 것이 일반적 
but 정적 필드에서는 예외

2.2.3 static main() 메서드

자바 가상 머신은 프로그램을 실행할 때 실행 클래스명.main() 을 실행하므로 가장 먼저 실행되는 메서드인 main() 메서드를 정적 메서드로 구성한 것

p 302



Doit ! Java_3 에 이어지는 내용으로 세부적인 부분 꼼꼼하게 기억해둘 것


0개의 댓글