inblog logo
|
DailyCoding
    JAVA

    13. 함수(Function)와 메서드(Method)

    박은서's avatar
    박은서
    Dec 16, 2025
    13. 함수(Function)와 메서드(Method)
    Contents
    1. 함수(Function)1️⃣ 함수란?2️⃣ 함수의 기본 구조(일반적인 개념)3️⃣ 함수의 구성 요소4️⃣ 함수의 호출 과정5️⃣ Consumer (소비자, 소비 함수)6️⃣ Supplier (공급자, 공급 함수)2. 메서드(Method)1️⃣ 메서드란?2️⃣ 메서드의 기본 구조3️⃣ 메서드의 구성 요소4️⃣ 메서드의 호출5️⃣ 메서드와 메모리 구조6️⃣ 실습필기 정리

    1. 함수(Function)

    1️⃣ 함수란?

    1) 함수의 개념

    특정한 일을 하도록 미리 만들어 놓은 ‘작업 버튼’ 같은 것
    • 어떤 일을 묶어서
    • 이름을 붙여두고
    • 필요할 때마다 불러서 쓰는 코드 덩어리
    → 함수는 입력을 받아서 정해진 작업을 한 뒤 결과를 내놓는 코드 덩어리
    ⚠️ 상태에 따라 다른 값이 나오는 건 함수라고 할 수 없음

    2) 자바에서 함수

    👉 자바에는 “독립 함수”가 없다
    ⚠️ 자바에서는 모든 함수 = 클래스 안에 있는 메서드(Method)

    2️⃣ 함수의 기본 구조(일반적인 개념)

    1) 기본 구조

    반환값 함수이름(입력값) { 처리 내용 return 결과; }

    2) 예시

    add(3, 5) → 8

    3️⃣ 함수의 구성 요소

    1) 함수 이름

    • 함수 호출 시 사용

    2) 매개변수(Parameter)

    • 함수로 전달되는 값

    3) 반환값(Return)

    • 함수 실행 결과
    • 없으면 void

    4️⃣ 함수의 호출 과정

    1. 함수 호출
    1. 매개변수 값 전달
    1. 함수 내부 실행
    1. return 값 전달
    1. 호출 위치로 복귀
    📌 이 과정은 Stack 메모리에서 이루어짐

    5️⃣ Consumer (소비자, 소비 함수)

    1) 개념

    입력은 받지만(consume), 아무것도 돌려주지 않는 함수
    👉 값을 받아서 사용(소비)만 하고, 반환값은 없음

    2) Consumer가 필요한 경우

    • 출력
    • 로그
    • 값 저장
    • 화면 표시

    3) 실습

    void 입력해서 사용
    package ex04; // add(+), minus(-), multi(*), divide(/) public class Cal01 { static void add(int a, int b){ //void 중요! 생략불가 System.out.println("a+b="+(a+b)); } static void minus(int a, int b){ System.out.println("a-b="+(a-b)); } static void multi(int a, int b){ System.out.println("a*b="+(a*b)); } static void divide(int a, int b){ System.out.println("a/b="+(a/b)); } public static void main(String[] args) { add(3,5); //static에 있는 것 "class이름.OO"로 불러 와야 함. 같은 파일에서는 생략 가능 minus(10,7); multi(2,6); divide(16,4); } }
    notion image

    6️⃣ Supplier (공급자, 공급 함수)

    1) 개념

    함수로 도출된 값을 공급(리턴)하는 함수

    2) Supplier가 필요한 경우

    • 객체 생성
    • 기본값 제공
    • 지연 로딩(Lazy Loading)

    3) 실습

    int, String 등 return값의 타입을 입력해서 사용
    package ex04; // add(+), minus(-), multi(*), divide(/) public class Cal02 { static int add(int a, int b){ return a+b; } static int minus(int a, int b){ return a-b; } static int multi(int a, int b){ return a*b; } static int divide(int a, int b){ return a/b; } public static void main(String[] args) { int r1 = add(3,5); int r2 = minus(3,5); int r3 = multi(3,5); int r4 = divide(3,5); System.out.println(r1+r2+r3+r4); } }
    notion image
     

    2. 메서드(Method)

    1️⃣ 메서드란?

    클래스 안에 정의된 동작(행위), 객체가 할 수 있는 일을 코드로 표현한 것
    행위를 통해 상태(변수)를 변경
    ⚠️ 상태에 따라 출력값이 달라지거나 상태를 변경시키는 것은 메서드
    ⚠️ 객체 지향 프로그래밍에서 상태에 따라 변경되는 메서드 지양

    2️⃣ 메서드의 기본 구조

    1) 기본 구조

    접근제어자 반환타입 메서드이름(매개변수) { 실행문; return 반환값; }

    2) 예시

    public int add(int a,int b) { return a + b; }

    3️⃣ 메서드의 구성 요소

    1) 접근 제어자

    • public : 어디서나
    • protected : 상속 관계
    • default : 같은 패키지
    • private : 클래스 내부

    2) 반환 타입

    • 메서드 실행 결과 타입
    • 없으면 void
    void print() { }

    3) 메서드 이름

    • 동사형 권장 (calculate, print)

    4) 매개변수

    • 메서드 호출 시 전달받는 값
    • 여러 개 가능

    5) return 문

    • 메서드 종료
    • 반환값 전달

    4️⃣ 메서드의 호출

    1) 인스턴스 메서드

    Calculator c=new Calculator(); int result= c.add(3,4);
    📌 객체를 통해 호출

    2) static 메서드

    • 객체 생성 ❌
    • 클래스 소속
    class MathUtil { static int square(int x) { return x * x; } }
    int r = MathUtil.square(5);

    5️⃣ 메서드와 메모리 구조

    • 호출 시 Stack 영역에 쌓임
    • 지역 변수는 메서드 종료 시 제거
    main() └─add() └─ return

    6️⃣ 실습

    package ex04; public class Tv01 { boolean on = false; // 상태 / 메인 전에 적으면 상태가 됨. 메인 안에 적으면 상태 아님. public static void main(String[] args) { // 이 라인에서는 static만 떠있는 상태 Tv01 tv = new Tv01(); // 객체(Object) 생성 / new class명() - static이 아닌 것들 메모리(힙이라는 공간)에 다 띄움 System.out.println(tv.on); tv.on = true; System.out.println(tv.on); } }
    false → on으로 상태 변경. 문법적으로는 맞지만 프로그램에서 이렇게 사용하지 않음
    상태는 무조건 행위를 통해 변경 → 이게 메서드
    행위를 적는 라인은 class 중괄호 안에 입력(main 전)
    package ex04; public class Tv01 { boolean status = false; // 상태 / 메인 전에 적으면 상태가 됨. 메인 안에 적으면 상태 아님. void on(){ // on을 실행하면 true로 상태가 변화 -> 메서드 System.out.println("tv가 켜졌어요."); status = true; // 상태변경 } void off(){ // off를 실행하면 false로 상태가 변화 -> 메서드 System.out.println("tv가 꺼졌어요."); status = false; } public static void main(String[] args) { // 이 라인에서는 static만 떠있는 상태 Tv01 tv = new Tv01(); // 객체(Object) 생성 / new class명() - static이 아닌 것들 메모리(힙이라는 공간)에 다 띄움 System.out.println(tv.status); tv.on(); System.out.println(tv.status); tv.off(); System.out.println(tv.status); } }
    notion image
     

    필기 정리

    notion image
    Share article
    Contents
    1. 함수(Function)1️⃣ 함수란?2️⃣ 함수의 기본 구조(일반적인 개념)3️⃣ 함수의 구성 요소4️⃣ 함수의 호출 과정5️⃣ Consumer (소비자, 소비 함수)6️⃣ Supplier (공급자, 공급 함수)2. 메서드(Method)1️⃣ 메서드란?2️⃣ 메서드의 기본 구조3️⃣ 메서드의 구성 요소4️⃣ 메서드의 호출5️⃣ 메서드와 메모리 구조6️⃣ 실습필기 정리

    DailyCoding

    RSS·Powered by Inblog