본문 바로가기
Programming/객체 지향 프로그래밍(OOP)

OOP 개념: 메소드 지정자

by vita12321 2023. 9. 16.
728x90
반응형

이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 핵심 요소 하나인 '메소드 지정자' 대해 더욱 깊이 있게 알아보겠습니다. 메소드 지정자는 클래스 내부의 메소드가 어떻게 동작하고 어디에서 접근 가능한지를 결정하는 중요한 역할을 합니다.


1. 메소드 지정자 (Method Modifier) 이해하기

 

객체 지향 프로그래밍에서 '메소드 지정자' 클래스 내부의 메소드에 대한 접근 권한을 제어하거나 특성을 정의하는 역할을 합니다. 이를 통해 데이터 보호와 코드의 안전성이 보장되며, 재사용성과 유지보수성도 증가합니다.

 

예시 코드:

public class Dog {

    public void bark() {

        System.out.println("Woof!");

    }

}

 

코드에서 `bark()`라는 메서드 앞에 붙은 `public` 바로 메소드 지정자입니다. 이것은 해당 메서드가 어디서든 호출될 있음을 의미합니다.


2. 주요 메소드 지정자

 

Java 같은 언어에서 사용되는 주요 메소드 지정자에는 `public`, `private`, `protected`, 그리고 디폴트(접근 제어자가 없음) 있습니다.

 

  • public: 이 키워드가 붙은 멤버(필드나 메서드 등)는 어디서든 접근 가능합니다.

  • private: 이 키워드가 붙은 멤버는 해당 클래스 내부에서만 접근 가능합니다.

  • protected: 이 키워드가 붙은 멤버는 해당 클래스 및 동일 패키지 혹은 서브클래스 내부에서만 접근 가능합니다.

  • default: 아무런 키워드도 없으면 디폴트로 간주되며, 해당 패키지 내부에서만 접근 가능합니다.

3. 각각의 경우 자세히 알아보기

 

1) Public

 

`public`으로 선언된 필등 또는 매서들느 모든 곳에서 직접적으로 호출될 있습니다.

 

예시 코드:

public class Dog {

    public void bark() {

        System.out.println("Woof!");

    }

}

 

Dog myDog = new Dog();

myDog.bark(); // "Woof!" 출력

 

예제에서 `bark()` 메소드는 public으로 선언되어 있어서, Dog 클래스의 인스턴스인 `myDog` 통해 어디서든 호출될 있습니다.

 

2) Private

 

`private`으로 선언된 필드나 메소드는 해당 클래스 내부에서만 접근 가능합니다. 이는 객체 지향 프로그래밍의 캡슐화 원칙을 지키기 위해 중요한 요소입니다.

 

예시 코드:

public class Dog {

    private String name;

 

    public void setName(String newName) {

        this.name = newName;

    }

 

    public String getName() {

        return this.name;

    }

}

 

Dog myDog = new Dog();

myDog.setName("Rex");

System.out.println(myDog.getName()); // "Rex" 출력

 

예제에서 `name` 필드는 private 선언되어 있어서, 직접적인 접근이 불가능합니다. 그래서 `setName()` `getName()`이라는 public 메소드를 통해 간접적으로 접근하고 수정할 있습니다.

 

3) Protected

 

`protected` 해당 클래스와 동일 패키지에 있는 다른 클래스, 그리고 해당 클래스를 상속받은 서브클래스에서만 접근 가능하도록 합니다.

 

예시 코드:

public class Animal {

    protected int legs;

 

    protected void setLegs(int legs) {

        this.legs = legs;

    }

}

 

public class Dog extends Animal {

   public void bark() {

       setLegs(4);

       System.out.println("I have " + legs + " legs and I can bark!");

   }

}

 

예제에서 `legs` 필드와 `setLegs()` 메소드는 protected 설정되었습니다. 따라서 Animal 상속받은 Dog 클래스 내부에서 이들에 접근할 있습니다.

 

4) Default

 

아무런 지정자도 붙지 않은 경우, default 간주됩니다. 경우 해당 패키지 내부에서만 접근 가능합니다.

 

예시 코드:

class MyPackageClass{

   void testMethod(){

      System.out.println("This is a default method");

   }

}

예제의 'testMethod' 메소드 앞에 아무런 지정자도 없으므로 디폴트(default) 간주되며, 같은 패키지 다른 클래스들이 'testMethod' 접근할 있습니다.


4. 결론

 

객체 지향 프로그래밍에서 '메소드 지정자' 데이터 보호와 코드의 안전성을 보장하는 중요한 역할을 합니다. 이를 통해 우리는 클래스 내부의 메소드가 어떻게 동작하고 어디에서 접근 가능한지를 제어할 있습니다.

 

이처럼 '메소드 지정자' 이해하면, 우리는 데이터와 함수를 더욱 안전하게 관리하는 방법을 배울 있습니다. 이것은 객체 지향 프로그래밍의 핵심이며, 좋은 소프트웨어 설계의 기본입니다.

 

또한 메소드 지정자는 코드 재사용성과 유지 보수성을 높여주며, 대규모 프로그램 개발에 필수적인 요소입니다. 따라서 각각의 역할과 작동 원리를 정확히 이해하는 것이 중요합니다.

 

마지막으로, 올바른 메소드 지정자의 선택은 클래스와 멤버들에 대한 적절한 접근 제어를 가능하게 하여 코드의 안전성을 높일 있습니다. 이는 실제 개발 환경에서 매우 중요한 부분으로, 특히 다른 개발자들과 협업할 때나 규모의 프로젝트에서 더욱 그렇습니다.

728x90
반응형

 

728x90
반응형