Method 에 관하여

2025. 1. 16. 21:15·java

1. 메서드란 무엇인가?

  • 메서드는 특정 작업을 수행하기 위해 작성된 코드 블록입니다.
  • 재사용 가능한 코드를 작성하는 데 사용되며, 유지보수성과 가독성을 높여줍니다.
  • Java에서 메서드는 클래스 안에 정의되며 객체 지향 프로그래밍의 핵심 구성 요소입니다
public class MethodExample {

    // 메서드 선언 (정적 메서드)
    public static int addNumbers(int a, int b) {
        // 두 숫자의 합을 반환하는 메서드
        return a + b;
    }

    // void 메서드 (반환값 없음)
    public static void printMessage(String message) {
        // 메시지를 출력하는 메서드
        System.out.println("Message: " + message);
    }

    public static void main(String[] args) {
        // 메서드 호출
        int result = addNumbers(5, 10); // 5와 10을 더한 결과를 반환
        System.out.println("Result: " + result);

        printMessage("Hello, Java!"); // 메시지를 출력
    }
}

2. Java 메서드의 구조

Java 메서드는 특정 작업을 수행하거나 값을 반환하는 코드 블록으로, 일정한 구조를 따릅니다. 메서드의 구조를 이해하면 다양한 메서드를 작성하고 활용할 수 있습니다.

access_modifier return_type method_name(parameter_list) {
    // 메서드의 실행 블록
}

3. 메서드 오버로딩 (Method Overloading)

  • 메서드 오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수, 타입, 순서를 다르게 지정하여 구분하는 기법입니다.
  • 같은 이름의 메서드를 재사용하므로, 코드의 가독성을 높이고 유지보수를 용이하게 만듭니다.
  • 오버로딩은 반환 타입만 다르게 해서 구현할 수는 없습니다. (매개변수가 반드시 달라야 함)

오버로딩의 규칙

  1. 메서드 이름은 동일해야 합니다.
  2. 매개변수의 개수, 타입, 순서가 달라야 합니다.
  3. 반환 타입만 다른 경우 오버로딩이 불가능 합니다.
public class MethodOverloadingExample {

    // 오버로딩 메서드 1: 매개변수 없음
    public void greet() {
        System.out.println("Hello!");
    }

    // 오버로딩 메서드 2: 매개변수가 하나 (이름)
    public void greet(String name) {
        System.out.println("Hello, " + name + "!");
    }

    // 오버로딩 메서드 3: 매개변수가 두 개 (이름과 나이)
    public void greet(String name, int age) {
        System.out.println("Hello, " + name + "! You are " + age + " years old.");
    }

    // 오버로딩 메서드 4: 매개변수의 순서가 다름
    public void greet(int age, String name) {
        System.out.println("Hello, " + name + "! Your age is " + age + ".");
    }

    public static void main(String[] args) {
        MethodOverloadingExample example = new MethodOverloadingExample();

        // 오버로딩된 메서드 호출
        example.greet(); // 매개변수 없음
        example.greet("Alice"); // 이름만 전달
        example.greet("Bob", 25); // 이름과 나이 전달
        example.greet(30, "Charlie"); // 나이와 이름 전달
    }
}

결과

Hello!
Hello, Alice!
Hello, Bob! You are 25 years old.
Hello, Charlie! Your age is 30.

4. 메서드 오버라이딩 (Method Overriding)

  • 오버라이딩은 상속받은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말합니다.
  • 부모 클래스의 기본 동작을 자식 클래스에서 커스터마이징하기 위해 사용합니다.
  • 오버라이딩된 메서드는 부모 클래스의 메서드와 이름, 매개변수, 반환 타입이 동일해야 합니다.

오버라이딩의 규칙

  1. 메서드 이름, 매개변수 리스트, 반환 타입이 부모 클래스와 동일해야 합니다.
  2. 접근 제어자는 부모 클래스의 메서드보다 더 제한적으로 설정할 수 없습니다.
    • 예: 부모 메서드가 public이라면 자식 메서드는 protected나 private으로 설정할 수 없습니다.
  3. @Override 어노테이션을 사용해 오버라이딩임을 명시합니다.
    • 컴파일러가 오버라이딩 규칙을 검증하며 실수를 방지할 수 있습니다.
  4. 부모 클래스의 메서드가 final로 선언되어 있으면 오버라이딩이 불가능합니다.
  5. 부모 클래스의 메서드가 static이면 오버라이딩 대신 **숨김(hiding)**이 발생합니다.
// 부모 클래스
class Animal {
    // 부모 클래스의 메서드
    public void sound() {
        System.out.println("Animals make sounds");
    }
}

// 자식 클래스
class Dog extends Animal {
    @Override
    public void sound() {
        // 부모 메서드를 재정의
        System.out.println("Dog barks");
    }
}

// 또 다른 자식 클래스
class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Cat meows");
    }
}

public class MethodOverridingExample {
    public static void main(String[] args) {
        // 부모 클래스 참조로 자식 객체 생성
        Animal myAnimal = new Animal();
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        // 메서드 호출
        myAnimal.sound(); // Animals make sounds
        myDog.sound();    // Dog barks
        myCat.sound();    // Cat meows
    }
}

결과

Animals make sounds
Dog barks
Cat meows

마무리

Java 메서드는 객체 지향 프로그래밍에서 가장 기본적이고 중요한 요소 중 하나로, 프로그램의 구성과 실행을 가능하게 만듭니다. 

'java' 카테고리의 다른 글

Signature 에 관하여  (0) 2025.01.22
BufferedReader와 Scanner의 차이 및 비교  (0) 2025.01.21
숏서킷 연산에 관하여  (0) 2025.01.20
Interface 에 관하여  (1) 2025.01.19
Java 에 관하여  (2) 2025.01.15
'java' 카테고리의 다른 글
  • BufferedReader와 Scanner의 차이 및 비교
  • 숏서킷 연산에 관하여
  • Interface 에 관하여
  • Java 에 관하여
heejunp
heejunp
희준개발
  • heejunp
    희준개발
    heejunp
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • java (16)
      • spring (1)
        • test (0)
      • web (1)
      • cloud (1)
      • database (2)
      • algorithm (7)
      • OS (2)
      • sonarqube (0)
      • ai (1)
      • 기타 (2)
      • 사고 (1)
      • go (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    heejunp
    Method 에 관하여
    상단으로

    티스토리툴바