[JAVA] classλž€?


Contents




Class

μžλ£Œν˜• 쀑 ν•˜λ‚˜λ‘œ 객체λ₯Ό μ •μ˜ν•΄ 놓은 것이닀.

κ΄€λ ¨ μžˆλŠ” 속성과 ν–‰μœ„(κΈ°λŠ₯)λ₯Ό 묢음(멀버)으둜 κ΄€λ¦¬ν•œλ‹€.

ν•˜λ‚˜μ˜ 클래슀 파일(.class)μ—λŠ” λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ μžλ°” 클래슀만 ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€.

final ν‚€μ›Œλ“œκ°€ 뢙은 ν΄λž˜μŠ€λŠ” 상속이 λΆˆκ°€λŠ₯ν•œ ν΄λž˜μŠ€κ°€ λœλ‹€.(ex. String class)

1. 클래슀 λͺ…λͺ… κ·œμΉ™

  1. ν•˜λ‚˜ μ΄μƒμ˜ 문자둜 이루어져야 ν•œλ‹€.
  2. 첫 번째 κΈ€μžμ—λŠ” μˆ«μžκ°€ 올 수 μ—†λ‹€.
  3. 첫 번째 κΈ€μžλŠ” λŒ€λ¬Έμžλ‘œ μž‘μ„±ν•œλ‹€.
  4. μžλ°” λͺ…λ Ήμ–΄, ν‚€μ›Œλ“œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.(while, for, int λ“±)
  5. $, _ μ™Έμ—λŠ” 특수문자 μ‚¬μš© λΆˆκ°€λŠ₯



2. 클래슀 멀버 ꡬ성

ν•„λ“œ(field), μƒμ„±μž(constructor), λ©”μ„œλ“œ(method)둜 이루어져 μžˆλ‹€. 이 ꡬ성 멀버듀은 μƒλž΅λ˜κ±°λ‚˜ μ—¬λŸ¬ 개 μž‘μ„±λ  수 μžˆλ‹€.

  • ν•„λ“œ : 객체의 데이터가 μ €μž₯λ˜λŠ” κ³³
    • λ³€μˆ˜μ˜ μ„ μ–Έκ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ λ³€μˆ˜λŠ” μƒμ„±μžμ™€ λ©”μ†Œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜κ³  μƒμ„±μžμ™€ λ©”μ†Œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μžλ™μœΌλ‘œ μ†Œλ©Έλœλ‹€.
    • 클래슀 μ„ μ–Έ λ°”λ‘œ μ•„λž˜μ— μ„ μ–Έλ˜λ©°, μƒμ„±μžμ™€ λ©”μ†Œλ“œλ³΄λ‹€ μœ„μ— μ„ μ–Έλœλ‹€.
        class TV{
        // field 자리
        boolean power;
        int channel;
        }
      


  • μƒμ„±μž
    • 객체λ₯Ό μ΄ˆκΈ°ν™” ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
    • 클래슀λͺ…κ³Ό λ™μΌν•œ μ΄λ¦„μ˜ 멀버 λ©”μ†Œλ“œ
    • 객체 생성 μ‹œ λ°˜λ“œμ‹œ ν˜ΈμΆœλœλ‹€(ex. new Info())
    • μΈμžκ°€ μ—†λŠ” μƒμ„±μžλ₯Ό default constructor라고 λΆ€λ₯Έλ‹€.
      • λ””ν΄νŠΈ μƒμ„±μžλŠ” λ”°λ‘œ μ •μ˜ν•˜μ§€ μ•Šμ•„λ„ JVM이 μ•Œμ•„μ„œ 호좜 ν•΄μ€€λ‹€.
    • μ˜€λ²„λ‘œλ”©μ΄ κ°€λŠ₯ν•˜λ‹€. => 객체 μƒμ„±ν•˜λŠ” 방법을 λ‹€μ–‘ν•˜κ²Œ μ œκ³΅ν•  수 μžˆλ‹€.
      • μ˜€λ²„λ‘œλ”©ν•  경우 default μƒμ„±μžλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ default μƒμ„±μžλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.
      • Info(String s){...}만 μ˜€λ²„λ‘œλ”©ν•  경우 -> new Info()λŠ” μ—λŸ¬ λ°œμƒ
          // Info class
          public class Info() {
          // field
          private String name;
          private int age;
        
          // Default Constructor
          Info() {
              System.out.println("hi");
          }
          // constructor overloading
          Info(String n, int a) {
              this.name = n;
              this.age = a;
          }
          ...
          }
        


  • λ©”μ†Œλ“œ
    • 객체의 ν–‰μœ„λ₯Ό μ„€μ •ν•˜λŠ” κ³³
        class TV {
        ...
        // λ©”μ†Œλ“œ μ˜μ—­
        void view(){
            System.out.println("TV의 ν™”λ©΄μž…λ‹ˆλ‹€.");
        }
        }
      



3. μ˜ˆμ‹œ

  • Info class
      class Info {
          String name;
          int age;
    
          String infoToString() {
              return "Info[name = " + name + ", age = " + age + "]";
          }
      }
    


  • main class
      public static void main(String[] args){
          // InfoλŠ” 클래슀 μžλ£Œν˜•μ΄λΌμ„œ λ°°μ—΄μ˜ μžλ£Œν˜•μ΄ 될 수 μžˆλ‹€.
          Info[] infos = new Info[2];
    
          // Info 객체 생성
          infos[0] = new Info();
          infos[0].name = "홍길동";
          infos[0].age = 20;
    
          infos[1] = new Info();
          infos[1].name = "μ΄μˆœμ‹ ";
          infos[1].age = 30;
    
          System.out.println(infos[0].infoToString());
          System.out.println(infos[1].infoToString());
      }