Hamutaro - Hamtaro 4

Java

[JAVA] ์ ‘๊ทผ์ œ์–ด์ž (public, protected, default, private)

carsumin 2022. 1. 11. 14:35

 

 

์ ‘๊ทผ์ œ์–ด์ž (Access Modifiers)
  • ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ๋ณ€์ˆ˜ ๋“ฑ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ํ•ด๋‹น ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๊ฑฐ๋‚˜ ํ—ˆ์šฉ
  • Java์˜ ์ ‘๊ทผ์ œ์–ด์ž๋Š” public, protected, default, private 4๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค

 

public

 

  • public์ด ์ง€์ •๋œ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ๋ณ€์ˆ˜๋Š” ์–ด๋””์„œ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ์ฃผ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋‚˜ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” API๋‚˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉ
public class MyClass {
    public int publicVariable;
    
    public void publicMethod() {
        System.out.println("This is a public method.");
    }
}

 

 

protected

 

  • protected๊ฐ€ ์ง€์ •๋œ ๋ฉค๋ฒ„๋Š” ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ์ƒ์†๊ด€๊ณ„์—์„œ๋งŒ ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ
  • ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ๋ณดํ˜ธํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ
public class MyClass {
    protected int protectedVariable;
    
    protected void protectedMethod() {
        System.out.println("This is a protected method.");
    }
}

 

 

default

 

  • default๋Š” ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ํ•ด๋‹น ๋ฉค๋ฒ„๋Š” ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ (package-private)
  • ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์™ธ๋ถ€์—๋Š” ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ
class MyClass {
    int defaultVariable;
    
    void defaultMethod() {
        System.out.println("This is a default method.");
    }
}

 

 

private

 

  • private๊ฐ€ ์ง€์ •๋œ ๋ฉค๋ฒ„๋Š” ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ, ๊ฐ™์€ ํŒจํ‚ค์ง€์˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
  • ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉ
  • ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด private ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด getter์™€ setter ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
public class MyClass {
    private int privateVariable;
    
    private void privateMethod() {
        System.out.println("This is a private method.");
    }
    
    public int getPrivateVariable() {
        return privateVariable;
    }

    public void setPrivateVariable(int privateVariable) {
        this.privateVariable = privateVariable;
    }
}

 

 

์ •๋ฆฌ

 

  • ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ํด๋ž˜์Šค ์„ค๊ณ„ ์‹œ ์ค‘์š”ํ•œ ์—ญํ• 
  • ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„๋“ค์˜ ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ์ œ์–ดํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ์บก์Аํ™”๋ฅผ ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์‹œํ‚ด
์ ‘๊ทผ์ œ์–ด์ž ๊ฐ™์€ ํด๋ž˜์Šค ๊ฐ™์€ ํŒจํ‚ค์ง€ ํ•˜์œ„ ํด๋ž˜์Šค ๋‹ค๋ฅธ ํŒจํ‚ค์ง€
public O O O O
protected O O O X
default O O X X
private O X X X