개발 지식, 슀크립트/Java 문법

6-6클래슀(νŒ¨ν‚€μ§€μ™€ μ ‘κ·Ό μ œν•œμž)

μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2023. 10. 3. 23:53

νŒ¨ν‚€μ§€ : νŒ¨ν‚€μ§€μ˜ 물리적인 ν˜•νƒœλŠ” 파일 μ‹œμŠ€ν…œμ˜ 폴더이닀. νŒ¨ν‚€μ§€λŠ” λ‹¨μˆœνžˆ 파일 μ‹œμŠ€ν…œμ˜ 폴더 κΈ°λŠ₯만 ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 클래슀의 μΌλΆ€λΆ„μœΌλ‘œ, 클래슀λ₯Ό μœ μΌν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” μ‹λ³„μž 역할을 ν•œλ‹€.

 

μƒμœ„νŒ¨ν‚€μ§€.ν•˜μœ„νŒ¨ν‚€μ§€.클래슀

ex)

A 클래슀의 전체 이름은 com.mycompany.A

B 클래슀의 전체 이름은 com.yourcompany.B

 

νŒ¨ν‚€μ§€ μ„ μ–Έ : 클래슀λ₯Ό μž‘μ„±ν•  λ•Œ ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μ–΄λ–€ νŒ¨ν‚€μ§€μ— 속할 것인지λ₯Ό μ„ μ–Έν•˜λŠ” 것을 νŒ¨ν‚€μ§€ 선언이라고 ν•œλ‹€. 

예λ₯Ό λ“€μ–΄, Car ν΄λž˜μŠ€κ°€ com.mycompany νŒ¨ν‚€μ§€μ— 속해야 ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 Car 클래슀λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

 

pakage com.mycompany;

 

public class Car() {...}

 

*νŒ¨ν‚€μ§€λŠ” 클래슀의 일뢀이닀. κ·Έ μ΄μœ λŠ” 클래슀만 λ”°λ‘œ λ³΅μ‚¬ν•΄μ„œ λ‹€λ₯Έ 곳으둜 μ΄λ™ν•˜λ©΄ 클래슀λ₯Ό μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. 

 

*νŒ¨ν‚€μ§€ 이름 μž‘μ„±μ‹œ κ·œμΉ™

- 숫자둜 μ‹œμž‘ν•΄μ„œλŠ” μ•ˆ 되고 _, $λ₯Ό μ œμ™Έν•œ 특수 문자λ₯Ό μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λœλ‹€.

- java둜 μ‹œμž‘ν•˜λŠ” νŒ¨ν‚€μ§€λŠ” μžλ°” ν‘œμ€€ APIμ—μ„œλ§Œ μ‚¬μš©ν•˜λ―€λ‘œ μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λœλ‹€.

- λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ μž‘μ„±ν•˜λŠ” 것이 관둀이닀.

 

*νŒ¨ν‚€μ§€ μ΄λ¦„μ˜ 쀑볡 λ°©μ§€ 방법

νšŒμ‚¬λ“€ 간에 νŒ¨ν‚€μ§€κ°€ μ€‘λ³΅λ˜μ§€ μ•Šλ„λ‘ ν”νžˆ νšŒμ‚¬μ˜ 도메인 μ΄λ¦„μœΌλ‘œ νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“ λ‹€. 도메인 등둝 κΈ°κ΄€μ—μ„œ μœ μΌν•œ 이름이 λ˜λ„λ‘ κ²€μ¦λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 도메인 μ΄λ¦„μœΌλ‘œ νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“€λ©΄ λ‹€λ₯Έ νšŒμ‚¬μ˜ νŒ¨ν‚€μ§€μ™€ μ€‘λ³΅λ˜λŠ” κ²½μš°κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

도메인 이름 μ—­μˆœμœΌλ‘œ νŒ¨ν‚€μ§€ 이름을 μ§€μ–΄μ£ΌλŠ”λ°, κ·Έ μ΄μœ λŠ” 포괄적인 μƒμœ„ νŒ¨ν‚€μ§€κ°€ λ˜λ„λ‘ ν•˜κΈ° μœ„ν•¨μ΄λ‹€. 그리고 λ§ˆμ§€λ§‰μ—λŠ” ν”„λ‘œμ νŠΈ 이름을 λΆ™μ—¬μ£ΌλŠ” 것이 관둀이닀.

 

ex)

com.samsung.projectname

com.hyundai.projectname

com.lg.projectname

 

importλ¬Έ : μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” 클래슀 λ˜λŠ” μΈν„°νŽ˜μ΄μŠ€κ°€ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μ†Œμ†λ˜μ–΄ μžˆλ‹€λ©΄, import문으둜 ν•΄λ‹Ή νŒ¨ν‚€μ§€μ˜ 클래슀 λ˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό 가져와 μ‚¬μš©ν•  κ²ƒμž„μ„ μ»΄νŒŒμΌμ—κ²Œ μ•Œλ €μ€˜μ•Ό ν•œλ‹€.

 

ex) import문을 μž‘μ„±ν•˜λŠ” 법

import μƒμœ„νŒ¨ν‚€μ§€.ν•˜μœ„νŒ¨ν‚€μ§€.ν΄λž˜μŠ€μ΄λ¦„;

import μƒμœ„νŒ¨ν‚€μ§€.ν•˜μœ„νŒ¨ν‚€μ§€.*;

 

*import문은 νŒ¨ν‚€μ§€ μ„ μ–Έκ³Ό 클래슀 μ„ μ–Έ 사이에 μž‘μ„±ν•œλ‹€.

*λ§Œμ•½ μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” ν΄λž˜μŠ€λ“€μ΄ λ™μΌν•œ νŒ¨ν‚€μ§€ μ†Œμ†μ΄λΌλ©΄ κ°œλ³„ import문을 μž‘μ„±ν•˜λŠ” κ²ƒλ³΄λ‹€λŠ” *λ₯Ό μ΄μš©ν•΄μ„œ ν•΄λ‹Ή νŒ¨ν‚€μ§€μ— μ†Œμ†λœ ν΄λž˜μŠ€λ“€μ„ μ‚¬μš©ν•  κ²ƒμž„μ„ μ•Œλ €μ£ΌλŠ” 것도 쒋은 방법이닀. 

*import문은 κ°œμˆ˜μ— μ œν•œμ΄ μ—†κ³  μ–Όλ§ˆλ“ μ§€ μΆ”κ°€ν•  수 μžˆλ‹€.

*μƒμœ„ νŒ¨ν‚€μ§€λ₯Ό importν–ˆλ‹€κ³  ν•΄μ„œ ν•˜μœ„ νŒ¨ν‚€μ§€ κΉŒμ§€ importλ˜λŠ” 것은 μ•„λ‹ˆλΌλŠ” 점이닀. μžλ°”λŠ” νŒ¨ν‚€μ§€ 전체 μ΄λ¦„μœΌλ‘œ νŒ¨ν‚€μ§€λ₯Ό μ‹λ³„ν•˜κΈ° λ•Œλ¬Έμ— com.hankookκ³Ό com.hankook.projectλ₯Ό μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€λ‘œ μΈμ‹ν•œλ‹€.

 

 

μ ‘κ·Ό μ œν•œμž : μ ‘κ·Ό μ œν•œμžλŠ” 말 κ·ΈλŒ€λ‘œ 접근을 μ œν•œν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. μ—¬κΈ°μ„œ μ ‘κ·Όμ΄λž€ 클래슀 및 μΈν„°νŽ˜μ΄μŠ€ 그리고 이듀이 κ°€μ§€κ³  μžˆλŠ” λ©€λ²„μ˜ 접근을 λ§ν•œλ‹€.

 

  • public μ ‘κ·Ό μ œν•œμž : 단어 뜻 κ·ΈλŒ€λ‘œ μ™ΈλΆ€ ν΄λž˜μŠ€κ°€ 자유둭게 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œλ‹€.
  • protected μ ‘κ·Ό μ œν•œμž : 같은 νŒ¨ν‚€μ§€ λ˜λŠ” μžμ‹ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œλ‹€.
  • private μ ‘κ·Ό μ œν•œμž : 단어 뜻 κ·ΈλŒ€λ‘œ 개인적인 것이라 μ™ΈλΆ€μ—μ„œ μ‚¬μš©λ  수 없도둝 ν•œλ‹€. -> 같은 νŒ¨ν‚€μ§€ λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ x, λ‹€λ₯Έ νŒ¨ν‚€μ§€λŠ” λ¬Όλ‘  μ•ˆ 됨.
  • default μ ‘κ·Ό μ œν•œμž : 같은 νŒ¨ν‚€μ§€μ— μ†Œμ†λœ ν΄λž˜μŠ€μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•œλ‹€.

μƒμ„±μžμ˜ μ ‘κ·Ό μ œν•œ

객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” new μ—°μ‚°μžλ‘œ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•œλ‹€. ν•˜μ§€λ§Œ μƒμ„±μžλ₯Ό μ–΄λ””μ—μ„œλ‚˜ ν˜ΈμΆœν•  수 μžˆλŠ” 것은 μ•„λ‹ˆλ‹€. μƒμ„±μžκ°€ μ–΄λ–€ μ ‘κ·Ό μ œν•œμ„ κ°–λŠλƒμ— 따라 호좜 κ°€λŠ₯ μ—¬λΆ€κ°€ κ²°μ •λœλ‹€.

 

ν•„λ“œμ™€ λ©”μ†Œλ“œμ˜ μ ‘κ·Ό μ œν•œ

ν•„λ“œμ™€ λ©”μ†Œλ“€λ₯΄ μ„ μ–Έν•  λ•Œ ν•΄λ‹Ή ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©ν•  것인지, νŒ¨ν‚€μ§€ λ‚΄μ—μ„œλ§Œ μ‚¬μš©ν•  것인지, μ•„λ‹ˆλ©΄ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜ 것인지λ₯Ό κ²°μ •ν•΄μ•Ό ν•œλ‹€. 이것은 ν•„λ“œμ™€ λ©”μ†Œλ“œκ°€ μ–΄λ–€ μ ‘κ·Ό μ œν•œμ„ κ°–λŠλƒμ— 따라 κ²°μ •λœλ‹€.

 

*클래슀 내뢀일 경우 μ ‘κ·Ό μ œν•œμžμ˜ 영ν–₯을 λ°›μ§€ μ•ŠμŒ

 

 

Getter와 Setter λ©”μ†Œλ“œ

ν•„λ“œλŠ” μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 없도둝 막고 λ©”μ†Œλ“œλŠ” κ³΅κ°œν•΄μ„œ μ™ΈλΆ€μ—μ„œ λ©”μ†Œλ“œλ₯Ό 톡해 ν•„λ“œμ— μ ‘κ·Όν•˜λ„λ‘ μœ λ„ν•œλ‹€. ν•„λ“œμ˜ 값을 μ™ΈλΆ€λ‘œ. λ¦¬ν„΄ν•΄μ£ΌλŠ” λ©”μ†Œλ“œλ₯Ό Getter라고 ν•˜κ³  μ™ΈλΆ€μ—μ„œ 값을 λ°›μ•„ ν•„λ“œλ₯Ό λ³€κ²½ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό Setter라고 ν•œλ‹€.

 

private νƒ€μž… fieldName;

 

//Getter

public 리턴 νƒ€μž… getFieldName(); {

  return fieldName;

}

 

//Setter

public void setFieldName(νƒ€μž… fieldName) {

  this.fieldName = fieldName;

}

 

 

*ν•„λ“œ νƒ€μž…μ΄ boolean일 경우 GetterλŠ” get으둜 μ‹œμž‘ν•˜μ§€ μ•Šκ³  is둜 μ‹œμž‘ν•˜λŠ” 것이 관둀이닀.

private boolean stop;

 

//Getter

public boolean isStop() {

  return stop;

}

 

//Setter

public void setStop(boolean stop) {

  this.stop = stop;

}