πŸ““ Do it! μžλ°” ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ

ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€

1. 클래슀 μ‚¬μš©κ³Ό main() ν•¨μˆ˜

- 멀버 λ³€μˆ˜λŠ” 클래슀 속성을 λ‚˜νƒ€λ‚΄κ³ , λ©”μ„œλ“œλŠ” 멀버 λ³€μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 클래슀 κΈ°λŠ₯을 κ΅¬ν˜„

- main() ν•¨μˆ˜: μžλ°” 가상 λ¨Έμ‹ (JVM)이 ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•˜κΈ° μœ„ν•΄ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜. 클래슀 내뢀에 λ§Œλ“€μ§€λ§Œ, 클래슀의 λ©”μ„œλ“œλŠ” μ•„λ‹˜.

main() ν•¨μˆ˜μ—μ„œ 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 방법
1) 클래슀 내뢀에 main() ν•¨μˆ˜λ₯Ό λ§Œλ“¦
2) 외뢀에 ν…ŒμŠ€νŠΈμš© 클래슀λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©

2. new μ˜ˆμ•½μ–΄λ‘œ 클래슀 μƒμ„±ν•˜κΈ°

- 클래슀λ₯Ό μƒμ„±ν•˜λŠ” μ½”λ“œ: ν΄λž˜μŠ€ν˜• λ³€μˆ˜μ΄λ¦„ = new μƒμ„±μž;

- 클래슀λ₯Ό 생성할 λ•ŒλŠ” new μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜κ³  μ΄μ–΄μ„œ μƒμ„±μžλ₯Ό 써쀌

- 클래슀 μžλ£Œν˜• λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  new μ˜ˆμ•½μ–΄λ‘œ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜μ—¬ λŒ€μž…ν•˜λ©΄ μƒˆλ‘œμš΄ ν΄λž˜μŠ€κ°€ 생성됨

- 'ν΄λž˜μŠ€κ°€ μƒμ„±λœλ‹€' = 클래슀λ₯Ό μ‹€μ œ μ‚¬μš©ν•§ 수 μžˆλ„λ‘ λ©”λͺ¨λ¦¬ 곡간(νž™ λ©”λͺ¨λ¦¬)을 ν• λ‹Ή λ°›λŠ”λ‹€

- μΈμŠ€ν„΄μŠ€: μ‹€μ œλ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μƒμ„±λœ 클래슀

- μ°Έμ‘°λ³€μˆ˜: μΈμŠ€ν„΄μŠ€λ₯Ό κ°€λ¦¬ν‚€λŠ” ν΄λž˜μŠ€ν˜• λ³€μˆ˜

Student studentAhn = new Student();
- Student 클래슀 μžλ£Œν˜•μœΌλ‘œ studentAhn λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  new Student();둜 Student 클래슀λ₯Ό μƒμ„±ν•˜μ—¬ studentAhn에 λŒ€μž…ν•œλ‹€λŠ” 뜻
- studentAhn: μ°Έμ‘° λ³€μˆ˜, 이 λ³€μˆ˜κ°€ μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό 가리킴

3. μΈμŠ€ν„΄μŠ€μ™€ μ°Έμ‘° λ³€μˆ˜

- 클래슀: 객체λ₯Ό μ½”λ“œλ‘œ κ΅¬ν˜„ν•œ 것, 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λ©΄ μΈμŠ€ν„΄μŠ€κ°€ λ§Œλ“€μ–΄μ§

- μΈμŠ€ν„΄μŠ€: ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬ 곡간에 μƒμ„±λœ μƒνƒœ

- 객체: μƒμ„±λœ 클래슀의 μΈμŠ€ν„΄μŠ€

- μ°Έμ‘° λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μΈμŠ€ν„΄μŠ€μ˜ 멀버 λ³€μˆ˜μ™€ λ©”μ„œλ“œλ₯Ό μ°Έμ‘°ν•˜μ—¬ μ‚¬μš©ν•  수 있음. λ„νŠΈ(.) μ—°μ‚°μžλ₯Ό μ‚¬μš©

studentAhn.studentName = "μ•ˆμ—°μˆ˜";                     //멀버 λ³€μˆ˜ μ‚¬μš©
System.out.println(studentAhn.getStudentName());     //λ©”μ„œλ“œ μ‚¬μš©

4. μΈμŠ€ν„΄μŠ€μ™€ νž™ λ©”λͺ¨λ¦¬

- 클래슀 μƒμ„±μžλ₯Ό ν•˜λ‚˜ ν˜ΈμΆœν•˜λ©΄ μΈμŠ€ν„΄μŠ€κ°€ νž™ λ©”λͺ¨λ¦¬μ— 생성됨

- ν΄λž˜μŠ€κ°€ 생성될 λ•Œλ§ˆλ‹€ μΈμŠ€ν„΄μŠ€λŠ” λ‹€λ₯Έ λ©”λͺ¨λ¦¬ 곡간을 차지함

- 멀버 λ³€μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 곡간이 맀번 λ”°λ‘œ 생김 (멀버 λ³€μˆ˜ = μΈμŠ€ν„΄μŠ€ λ³€μˆ˜)

μš©μ–΄ μ„€λͺ…
객체 객체 μ§€ν˜• ν”„λ‘œκ·Έλž¨μ˜ λŒ€μƒ, μƒμ„±λœ μΈμŠ€ν„΄νŠΈ
클래슀 객체λ₯Ό ν”„λ‘œκ·Έλž˜λ°ν•˜κΈ° μœ„ν•΄ μ½”λ“œλ‘œ λ§Œλ“  μƒνƒœ
μΈμŠ€ν„΄μŠ€ ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— μƒμ„±λœ μƒνƒœ
멀버 λ³€μˆ˜ 클래슀의 속성, νŠΉμ„±
λ©”μ„œλ“œ 멀버 λ³€μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 클래슀의 κΈ°λŠ₯을 κ΅¬ν˜„
μ°Έμ‘° λ³€μˆ˜ λ©”λͺ¨λ¦¬μ— μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜
μ°Έμ‘° κ°’ μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œ κ°’

μƒμ„±μž

1. μƒμ„±μž(constructor)

- 클래슀λ₯Ό 처음 λ§Œλ“€ λ•Œ 멀버 λ³€μˆ˜λ‚˜ μƒμˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” 것

- μƒμ„±μž 이름은 클래슀 이름과 κ°™κ³ , μƒμ„±μžλŠ” λ°˜ν™˜κ°’μ΄ μ—†μŒ

- μƒμ„±μžκ°€ μ—†λŠ” ν΄λž˜μŠ€λŠ” 클래슀 νŒŒμΌμ„ μ»΄νŒŒμΌν•  λ•Œ μžλ°” μ»΄νŒŒμΌλŸ¬μ—μ„œ μžλ™μœΌλ‘œ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ€Œ -> λ””ν΄νŠΈ μƒμ„±μž

- λ””ν΄νŠΈ μƒμ„±μžλŠ” λ§€κ°œλ³€μˆ˜κ°€ μ—†κ³  κ΅¬ν˜„ μ½”λ“œλ„ μ—†μŒ

- μΈμŠ€ν„΄μŠ€κ°€ 생성됨과 λ™μ‹œμ— 멀버 λ³€μˆ˜μ˜ 값을 μ§€μ •ν•˜κ³  μΈμŠ€ν„΄μŠ€λ₯Ό μ΄ˆκΈ°ν™”ν•˜κΈ° μœ„ν•΄ μƒμ„±μžλ₯Ό 직접 κ΅¬ν˜„ν•˜μ—¬ μ‚¬μš©

2. μƒμ„±μž μ˜€λ²„λ‘œλ“œ

- ν΄λž˜μŠ€μ— μƒμ„±μžκ°€ 두 개 이상 μ œκ³΅λ˜λŠ” 경우

- ν•„μš”μ— 따라 λ§€κ°œλ³€μˆ˜κ°€ λ‹€λ₯Έ μƒμ„±μžλ₯Ό μ—¬λŸ¬ 개 λ§Œλ“€ 수 있음

public class Student {
    int studentID;

    public Student(int studentID){      
        this.studentID = studentID;    //ν•™λ²ˆμ„ λ§€κ°œλ³€μˆ˜λ‘œ μž…λ ₯λ°›μ•„ Student 클래슀λ₯Ό μƒμ„±ν•˜λŠ” μƒμ„±μž
    }
}

정보 은닉

1. μ ‘κ·Ό μ œμ–΄μž(access modifier)

- public: μ™ΈλΆ€ ν‹€λž˜μŠ€ μ–΄λ””μ—μ„œλ‚˜ μ ‘κ·Όν•  수 있음

- protected: 같은 νŒ¨ν‚€μ§€ 내뢀와 상속 κ΄€κ³„μ˜ ν΄λž˜μŠ€μ—μ„œλ§Œ μ ‘κ·Όν•  수 있고 κ·Έ μ™Έ ν΄λž˜μŠ€μ—μ„œλŠ” μ ‘κ·Όν•  수 μ—†μŒ

- 아무것도 μ—†λŠ” 경우: default이며 같은 νŒ¨ν‚€μ§€ λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Όν•  수 있음

- private: 같은 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Όν•  수 있음

2. get(), set() λ©”μ„œλ“œ

public class Student {
    int studentID;
    private String studentName;
    int grade;
    String address;

    public String getStudentName(){     //private λ³€μˆ˜μ— μ ‘κ·Όν•΄ 값을 κ°€μ Έμ˜΄
        return studentName;
    }

    public void setStudentName(String studentName){     //private λ³€μˆ˜μ— μ ‘κ·Όν•΄ 값을 지정함
        this.studentName = studentName;
    }
}

3. 정보 μ€λ‹‰μ΄λž€?

- 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  λ³€μˆ˜λ‚˜ λ©”μ„œλ“œλ₯Ό private으둜 μ„ μ–Έν•΄μ„œ μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 ν•˜λŠ” 것

- 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§• 쀑 ν•˜λ‚˜μ΄λ©° μžλ°”μ—μ„œλŠ” μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ‚¬μš”ν•˜μ—¬ 정보 은닉을 κ΅¬ν˜„

- ν•„μš”ν•œ κ²½μš°μ— private으둜 μ„ μ–Έν•˜μ—¬ 였λ₯˜λ₯Ό 막을 수 있음

 

'μ˜€κ³΅μ™„' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

231102 μ˜€κ³΅μ™„  (0) 2023.11.03
231101 μ˜€κ³΅μ™„  (0) 2023.11.02
231031 μ˜€κ³΅μ™„  (0) 2023.11.01
231028 μ˜€κ³΅μ™„  (0) 2023.10.28
231027 μ˜€κ³΅μ™„  (0) 2023.10.28

+ Recent posts