πŸ—„οΈ Backend/Java

μžλ°”(Java) - 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° (10) 정적 λ©”μ†Œλ“œ

kongmi 2023. 1. 16. 19:53

static

static(정적 멀버)λŠ” ν΄λž˜μŠ€μ— μ†Œμ†λœ λ©€λ²„λ‘œμ„œ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό μ˜λ―Έν•œλ‹€.
μ˜€λ‘œμ§€ 클래슀λ₯Ό ν†΅ν•΄μ„œλ§Œ 호좜됨.
public class StaticMethod {
    public static void main(String[] args) {
        Bank kakao = new Bank("카카였",1000);
        Bank toss = new Bank("ν† μŠ€", 1000);
        Bank kb = new Bank("κ΅­λ―Ό", 0);

        kakao.setDeposit(2000);
        kakao.setWithdraw(1580);
        kakao.viewAccount();

        System.out.println(Bank.getCount()); // getCount()λŠ” 정적 λ©”μ†Œλ“œμ΄λ©°, 클래슀 μ†Œμ†
    }
}

* getCount()λŠ” Bank(클래슀)에 μ˜ν•΄ 호좜

private static int count = 0;

-> Bank Classκ°€ λͺ‡ 번 μƒμ„±λ˜μ—ˆλŠ”μ§€ λˆ„μ ν•˜λŠ” 정적멀버(클래슀 ν•„λ“œ)

public static int getCount() {}

-> 정적 λ©”μ†Œλ“œμ΄λ©° 정적멀버에 λŒ€ν•œ getter

public void setDeposit(final int dep){} // μ˜ˆκΈˆμ„ μœ„ν•œ λ©”μ†Œλ“œ

-> λ§€κ°œλ³€μˆ˜μ— μ‚¬μš©λœ final은 전달 받은 λ§€κ°œλ³€μˆ˜κ°€ λ³€κ²½λ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

public class Bank {
    private static int count = 0; // ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ 객체둜 λͺ‡ 번 μƒμ„±λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” λ³€μˆ˜
    private int account; // κ³„μ’Œ
    private String bank; // 은행 이름
    public Bank(String name, int account) { // μƒμ„±μžλŠ” ν΄λž˜μŠ€κ°€ 객체둜 λ§Œλ“€μ–΄μ§ˆ λ•Œ 호좜됨!!!!!
        count++;
        bank = name;
        this.account = account;
        System.out.println(name + "μ€ν–‰μ˜ κ³„μ’Œλ₯Ό κ°œμ„€ ν•©λ‹ˆλ‹€. μž”μ•‘μ€ " + account + "원 μž…λ‹ˆλ‹€.");
    }
    // 정적 ν•„λ“œκ°’μ„ 읽기 μœ„ν•œ 정적 λ©”μ†Œλ“œ (클래슀 μ†Œμ†)
    // ν΄λž˜μŠ€κ°€ λ§Œλ“€μ–΄μ§ˆ λ•Œ 단 ν•œ 번만 λ§Œλ“€μ–΄μ§. (객체 μ†Œμ†μ΄ μ•„λ‹˜.)
    public static int getCount() {
        return count;
    }
    //   (μ˜ˆκΈˆμ„ μœ„ν•œ λ©”μ†Œλ“œ) //λ§€κ°œλ³€μˆ˜κ°€ λ°”λ€Œλ©΄ μ•ˆλ  경우 final둜 μƒμˆ˜μ²˜λ¦¬.. μ΅œμ’…κ°’μœΌλ‘œ 전달됨.
    public void setDeposit(final int dep) { // λ³€κ²½ λΆˆκ°€ μƒνƒœλ‘œ λ§Œλ“€μ–΄ μ•ˆμ „ν•˜κ²Œ 보호
        account += dep;
        System.out.println(dep + "원 예금 ν–ˆμŠ΅λ‹ˆλ‹€.");
    }
    //         (μΆœκΈˆμ„ μœ„ν•œ λ©”μ†Œλ“œ)
    public void setWithdraw(final int with) {
        if(with > account) {
            System.out.println("μž”μ•‘μ΄ λΆ€μ‘± ν•©λ‹ˆλ‹€.");
        } else {
            account -= with;
        }
    }
    public void viewAccount() {
        System.out.println("ν˜„μž¬ μž”μ•‘μ€ " + account + "원 μž…λ‹ˆλ‹€.");
    }
}

자주 μ‚¬μš©ν•˜λŠ” Utility μž‘μ„±

static λ©”μ†Œλ“œλŠ” μœ ν‹Έλ¦¬ν‹°μ„± λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•  λ•Œ 자주 μ‚¬μš©
예. Math ν•¨μˆ˜
호좜, κ³„μ‚°λ§Œ μ‚¬μš© ν•  κ²½μš°μ—λŠ” ν•œ 클래슀 내에 static으둜 μ’Œμ•… μƒμ„±ν•˜λ©΄ νŽΈν•¨.
ν•„μš”ν•  λ•Œλ§Œ κ°€μ Έλ‹€ μ“°λ©΄ λ˜λ‹ˆ 객체 생성 μ•ˆν•΄λ„ 되고 κ°„λ‹¨ν—ˆμ΄..
import java.text.SimpleDateFormat;
import java.util.Date;

public class Util {
    public static String getCurrentDate(String fmt) {
        SimpleDateFormat sdf = new SimpleDateFormat(fmt); // ν˜„μž¬ μ‹œκ°„ 좜λ ₯
        return sdf.format(new Date());
    }
}
public class StaticMethod {
    public static void main(String[] args) {
System.out.println("ν˜„μž¬ μ‹œκ°„μ„ 좜λ ₯ ν•©λ‹ˆλ‹€.");
        System.out.println(Util.getCurrentDate("yyyy-MM-DD hh:mm:ss"));
      }
}

final ν•„λ“œμ™€ μƒμˆ˜

λ³€ν•˜μ§€ μ•ŠλŠ” λΆˆλ³€μ˜ 값은 κ°μ²΄λ§ˆλ‹€ μ €μž₯ ν•  ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ—
단 ν•œλ²ˆλ§Œ μƒμ„±λ˜μ–΄μ•Ό 함.. κ·ΈλŸ¬λ―€λ‘œ static final λ°μ΄ν„°νƒ€μž… μƒμˆ˜λͺ…; 으둜 μ„ μ–Έ!!!!
final static String DOMAIN = "192.168.0.1";
package μ •μ λ©”μ†Œλ“œ0116

import static μ •μ λ©”μ†Œλ“œ0116.Util.DOMAIN;
public class StaticMethod{
     public static void main(String[] args) {
           System.out.println("도메인 μ£Όμ†Œ : " + DOMAIN);
      }
}

=> 단, 좜λ ₯ν•  λ•Œ import ν•΄μ€˜μ•Ό 함!!!

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