λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Study/Java

[TIL] μΊ‘μŠν™”

by hong- 2022. 5. 12.

πŸ”Ž OOP의 4λŒ€ νŠΉμ§•

☝🏻 μΊ‘μŠν™” Encapsulation

  - 객체의 속성과 ν–‰μœ„λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άκ³  μ‹€μ œ κ΅¬ν˜„ λ‚΄μš© 일뢀λ₯Ό 외뢀에 감좔어 은닉함

  - 데이터 보호 및 λΆˆν•„μš”ν•œ 데이터 μ™ΈλΆ€ λ…ΈμΆœ λ°©μ§€

  - 정보 은닉 및 독립성 (데이터 λ³€κ²½λ˜μ–΄λ„ 타 객체에 영ν–₯ x) 및 μœ μ§€λ³΄μˆ˜ 용이


✌🏻 νŒ¨ν‚€μ§€ Package

  - ν•˜λ‚˜μ˜ 디렉토리에 νŠΉμ •ν•œ λͺ©μ μ„ κ³΅μœ ν•˜λŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ 묢음

  - νŒŒμΌλ“€μ„ 폴더에 λ‹΄μ•„ λ†“λŠ” 것과 λΉ„μŠ·ν•œ κ°œλ…

  - 계측ꡬ쑰λ₯Ό κ°€μ§€λ©° 점(.)으둜 ꡬ뢄

  - νŒ¨ν‚€μ§€κ°€ μžˆλŠ” 경우 μ½”λ“œμ˜ 첫 쀄은 λ°˜λ“œμ‹œ 'package νŒ¨ν‚€μ§€λͺ…' 으둜 ν‘œμ‹œ

  - 같은 클래슀의 이름을 κ°€μ§€κ³  μžˆλ”λΌλ„ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— ν¬ν•¨λ˜μ–΄ 있으면 ν˜‘μ—… μ‹œ 좩돌 λ°©μ§€

 πŸ’‘ λŒ€ν‘œμ μΈ νŒ¨ν‚€μ§€

    β–ͺ️ java.lang

     - μžλ°”μ˜ κΈ°λ³Έ ν΄λž˜μŠ€λ“€μ„ λͺ¨μ•„ 놓은 νŒ¨ν‚€μ§€

    β–ͺ️ java.util

     - ν™•μž₯ 클래슀λ₯Ό λ¬Άμ–΄ 놓은 클래슀

    β–ͺ️ java.io / java.nio

     - μžλ°”μ˜ μž…μΆœλ ₯κ³Ό κ΄€λ ¨λœ 클래슀λ₯Ό 묢어놓은 νŒ¨ν‚€μ§€


✌🏻 import 문

import νŒ¨ν‚€μ§€λͺ….클래슀λͺ…;

or

imprt νŒ¨ν‚€μ§€λͺ….*;

  - λ‹€λ₯Έ νŒ¨ν‚€μ§€ λ‚΄ 클래슀λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

  - λ‹€λ₯Έ νŒ¨ν‚€μ§€μ˜ 클래슀λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 맀번 νŒ¨ν‚€μ§€λͺ…을 λΆ™μ—¬μ„œ μž‘μ„±ν•΄μ•Ό 함 

    → improt문은 μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ†ŒμŠ€νŒŒμΌμ— μ‚¬μš©λœ 클래슀의 νŒ¨ν‚€μ§€μ— λŒ€ν•œ 정보λ₯Ό 제곡


🌟 importλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ λ‹€λ₯Έ νŒ¨ν‚€μ§€ 클래슀 μ‚¬μš©ν•˜λŠ” 방법

package μƒˆλ‘œμš΄ νŒ¨ν‚€μ§€;

public class 클래슀λͺ… {
	public static void main(String[] args) {
    	[λ‹€λ₯Έ νŒ¨ν‚€μ§€].[λ‹€λ₯Έ νŒ¨ν‚€μ§€ 클래슀λͺ…] [μƒˆλ‘œμš΄ 객체λͺ…] = new [λ‹€λ₯Έ νŒ¨ν‚€μ§€].[λ‹€λ₯Έ νŒ¨ν‚€μ§€ 클래슀λͺ…]();
    }
}

🀟🏻 μ ‘κ·Ό μ œμ–΄μž

 πŸ“ μ œμ–΄μž Modifier

  - μ œμ–΄μžλŠ” 클래슀, ν•„λ“œ, λ©”μ„œλ“œ, μƒμ„±μž 등에 뢀가적인 의미λ₯Ό λΆ€μ—¬ν•˜λŠ” ν‚€μ›Œλ“œ (ν˜•μš©μ‚¬ μ—­ν• )

  - μ ‘κ·Ό μ œμ–΄μž : public, protected, default, private

  - 기타 μ œμ–΄μž : static, final, abstract, native, transient, synchronized λ“±

    → static ?

    → final ?

    → abstract ?

 

 πŸ“ μ ‘κ·Ό μ œμ–΄μž Access Modifier

  - μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ‚¬μš©ν•˜λ©΄ λΆˆν•„μš”ν•œ 데이터 λ…ΈμΆœ λ°©μ§€ 및 λ¬΄λΆ„λ³„ν•œ 데이터 λ³€κ²½ λ°©μ§€\

  - μ ‘κ·Ό μ œν•œ λ²”μœ„ 넓은 μˆœμ— 따라 ν‘œν˜„ν•˜λ©΄, public > protected > default > private

μ ‘κ·Όμ œμ–΄μž μ ‘κ·Ό μ œν•œ λ²”μœ„ 클래슀 λ‚΄ νŒ¨ν‚€μ§€ λ‚΄ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ˜ ν•˜μœ„ 클래슀 νŒ¨ν‚€μ§€ μ™Έ
private 동일 ν΄λž˜μŠ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ O X X X
default 동일 νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ O O X X
protected 동일 νŒ¨ν‚€μ§€ + λ‹€λ₯Έ νŒ¨ν‚€μ§€ ν•˜μœ„ 클래슀 μ ‘κ·Ό κ°€λŠ₯ O O O X
public μ ‘κ·Ό μ œν•œ μ—†μŒ O O O O

🀟🏻 getter 와 setter λ©”μ„œλ“œ

  - 데이터λ₯Ό λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•¨

  - λ°μ΄ν„°λŠ” μ™ΈλΆ€ 접근을 막고 λ©”μ†Œλ“œλŠ” κ³΅κ°œν•΄μ„œ μ™ΈλΆ€μ—μ„œ λ©”μ†Œλ“œλ₯Ό 톡해 데이터에 μ ‘κ·Όν•˜λ„λ‘ 함

  - 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 객체의 λ°μ΄ν„°λŠ” 객체 μ™ΈλΆ€μ—μ„œ μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•˜λŠ” 것을 λ§‰μŒ

     → 객체 데이터λ₯Ό μ™ΈλΆ€μ—μ„œ 읽고 λ³€κ²½ μ‹œ 객체의 무결성이 깨질 수 있음

  - 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” λ©”μ†Œλ“œλ₯Ό 톡해 데이터λ₯Ό λ³€κ²½ν•˜λŠ” 방법 μ„ ν˜Έ

  - μ ‘κ·Όμ œμ–΄μžκ°€ ν¬ν•¨λ˜μ–΄ 데이터 값을 μΆ”κ°€ν•˜κ±°λ‚˜ μˆ˜μ •ν•  λ•Œ 였λ₯˜κ°€ λ‚˜λ©΄, getterκ³Ό setter λ©”μ„œλ“œ μ‚¬μš©

public static void main(String[] args) {
	Car audi = new Car();
    audi.setColor("Red");
    System.out.println(audi.getColor());
}

πŸ“ setter( ) : μ„ΈνŒ…

  - μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό λŒ€μž…ν•˜κ±°λ‚˜ μˆ˜μ •ν•¨

  - 데이터 값을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ³€κ²½ κ°€λŠ₯ν•˜λ„λ‘ μ„ΈνŒ…ν•΄μ£ΌλŠ” 것

  - λ©”μ„œλ“œλͺ… μ•žμ— set을 λΆ™μ—¬ μ •μ˜

πŸ“ getter( ) : κ°€μ Έμ˜΄

  - μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό λ°˜ν™˜

  - νŠΉμ • 데이터λ₯Ό μ½μ–΄μ˜€λŠ”λ° μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œ

  - λ³€ν™”ν•˜κ³ μž ν•˜λŠ” 값을 κ°€κ³΅ν•œ 이후에 μ™ΈλΆ€λ‘œ μ „λ‹¬ν•˜λŠ” μ—­ν• 

  - λ©”μ„œλ“œλͺ… μ•žμ— get-을 λΆ™μ—¬ μ •μ˜

p.name = "홍";      →	    setName("홍");
p.age = 25;         →       setAge(25);
System.out.println(p.name + "의 λ‚˜μ΄λŠ” " + p.age);
    →    System.out.println(getName() + "의 λ‚˜μ΄λŠ”" +getAge());

 

'Study > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[TIL] μ°Έμ‘°λ³€μˆ˜μ™€ μ°Έμ‘°νƒ€μž…  (0) 2022.05.14
[TIL] 상속  (0) 2022.05.12
[TIL] OOP μƒμ„±μž  (0) 2022.05.11
[Java] OOP ν•„λ“œμ™€ λ©”μ„œλ“œ  (0) 2022.05.10
[Java] OOP ν΄λž˜μŠ€μ™€ 객체  (0) 2022.05.10