본문 바로가기
Java/Java

[자바의 정석_기초편] Chapter07. 객체지향(Object Oriented)_2

by HJ0216 2023. 5. 7.

이 글은 남궁성의 정석코딩 [자바의정석-기초편] 수강하며 정리한 글입니다.

 

 

🟣 기본 환경: 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)만 가능

 

 

 

소스 코드

🔗 HJ0216/java-practice

 

참고 자료

📑 [자바-객체지향2] 캡슐화

📑 [자바의 정석] ch7-22 캡슐화