이 글은 남궁성의 정석코딩 [자바의정석-기초편]을 수강하며 정리한 글입니다.
🟣 기본 환경: IDE: Eclipse, Language: Java
패키지(package): 서로 관련된 클래스의 묶음
class: 물리적 파일(.class), pkg: 물리적 디렉토리
클래스의 실제이름은 패키지를 포함(java.lang.String)
패키지 선언
패키지는 소스 파일의 첫 번째 문장으로 단 한 번만 선언
같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 됨
패키지 선언이 없으면 이름없는 패키지(default)에 속하게 됨
class와의 구별을 위해 첫글자는 소문자로 작성
cmd에서 java 실행
1. 해당 패키지의 주소*로 위치를 변경 cd: pkg 위치 지정
* pkg, class file 주소: 이클립스 alt + Enter
-> 해당 과정을 생략하기 위해 환경변수(ClassPath*) 설정
2. 올바른 위치인지 확인: dir 입력->해당 폴더 내 파일 확인
3. java pkgName.ClassName을 작성하여 실행
4. exit 입력하여 종료
* Class Path: 클래스 파일의 위치를 알려주는 경로로 경로간 구분자는 ;을 사용
classpath(환경변수)에 패키지 루트를 등록할 경우, cmd에서 경로를 따로 지정하지 않을 수 있음
- cmd상 classpath 지정여부 확인 ‘set classpath’
- cmd상 classpath 지정: set classpath=경로 ;를 구분자로 추가 가능
import문 삽입: 컴파일러에게 클래스가 속한 패키지를 알려줌 -> 패키지 이름을 생략할 수 있음
위치: pkg 선언과 class 선언 사이
import pkgName.CalssName;
(import pkgName.*; - 모든 클래스)
* 단축키: ctrl + shift + O
java.lang pkg 소속 class는 import문 사용없이 pkg.class가 아닌 class 사용 가능
이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지 명을 붙여줘야 함
static import: 클래스 이름을 생략할 수 있게 해줌
-> 가독성이 좋지만, 의미가 불명확할 수 있음
import static java.lang.Integer.*;
// Interger class의 모든 static member(static variable, static method)를 Integer. 없이 사용 가능
import static java.lang.Math.random;
// Math.random() -> random()으로 사용 가능
import static java.lang.System.out;
// System.out.println() -> out.println() 으로 사용 가능
System.out.println(Math.random());
→ out.println(random());
static: member variable, method, 초기화 블럭에 사용 가능
final: 마지막의, 변경될 수 없음
- final class: 다른 클래스의 조상이 될 수 없음(String, Math)
- final variable: 변수 → 상수
- fianl method: Overriding 불가(조상 매서드 변경 불가)
abstract: 추상의, 미완성의
- abstract class AbstractTest{ //… } - 추상 클래스(추상 매서드를 포함한 클래스)
- abstract void move(); - 추상 매서드(구현부{}가 없는 메서드)
* AbstractTest a = new Abstract();
추상클래스의 인스턴스 생성 불가(=미완성 설계도로는 제품 생성 불가)
→ 상속을 통해서 구현부를 만들어 주고 객체 생성 가능
제어자(Modifier): 클래스와 클래스의 멤버(멤버변수, 메서드)에 부가적인 의미 부여
접근 제어자: public>protected>default(아무것도 안붙이는 경우)>private
그 외: static, final, abstract
하나의 대상에 여러 제어자를 같이 사용하는 것은 가능하나, 접근 제어자는 1개만 사용
예: public static final int WIDTH = 200;
접근 제어자(access modifier): 1개만 사용 가능하며, 제일 왼쪽에 작성
-> 외부로부터 데이터를 보호하기 위해서(캡슐화) 또는 내부적으로만 사용되는 부분을 감추기 위해 사용
public: 제한X
protected: 같은 패키지 내에서, 다른 패키지의 자손클래스에서도 접근 가능
(default): 같은 패키지(폴더) 내에서만 접근 가능
private: 같은 클래스(파일) 내에서만 접근 가능
-> 해당 class 외부에서 접근 시, getPrivateMemberName()
해당 class 외부에서 설정 시, setPrivateMemberName() 활용
* class 앞에는 public or (default)만 가능
소스 코드
참고 자료
'Java > Java' 카테고리의 다른 글
[자바의 정석_기초편] Chapter07. 객체지향(Object Oriented)_4 (0) | 2023.05.10 |
---|---|
[자바의 정석_기초편] Chapter07. 객체지향(Object Oriented)_3 (0) | 2023.05.09 |
[자바의 정석_기초편] Chapter07. 객체지향(Object Oriented)_1 (0) | 2023.04.10 |
[자바의 정석_기초편] Chapter06. 객체지향 언어(Object Oriented Language)_3 (0) | 2023.04.09 |
[자바의 정석_기초편] Chapter06. 객체지향 언어(Object Oriented Language)_2 (0) | 2023.04.08 |