[자바 무료 강의] 객체에 행위를 추가하다 - 메서드 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의객체에 행위를 추가하다 - 메서드최종수정일 2021-11-21
아이콘약 3분

객체의 행위를 메서드라고 하는데요. 이번 강의는 메서드를 만드는 법을 배워봅시다.

추가 노트

목차


  1. 메서드

  2. [실습해보기] 메서드를 작성해보자

1. 메서드(Method)


메서드는 기본적으로 네 가지 메서드로 존재할 수 있습니다.

  1. 반환값이 있고 매개변수도 있는 메서드

  2. 반환값이 있고 매개변수가 없는 메서드

  3. 반환값이 없고 매개변수가 있는 메서드

  4. 반환값이 없고 매개변수가 없는 메서드

인스턴스 변수와 정적 변수가 있듯이 메서드에는 인스턴스 메서드정적 메서드가 있습니다.


메서드의 선언과 정의

메서드는 클래스 내부에 선언되며 다음과 같을 수 있습니다.

class Person {
    String name;
    int age;
    String gender;

    // 반환값이 없고 매개변수가 있는 메서드
    void setName(String name) {
        this.name = name;
    }

    // 반환값이 있고 매개변수가 없는 메서드
    String getName() {
        System.out.println(name);
        return name;
    }
}

반환값이 없는 메서드는 void 키워드를 선언해야 하며, 반환값이 있는 메서드는 메서드 내부에 return 키워드와 반환값이 존재해야 합니다.


반환값이 없는 메서드에도 return 키워드가 존재할 수 있다

메서드 실행 도중 종료되길 원한다면 메서드에서 반환값없는 return 키워드를 이용하여 메서드 실행을 종료할 수 있습니다.

class Study {boolean isStuding;

    void start() {
        if (isStuding) {
            System.out.println("이미 공부중이다");
            return;
        }
        isStuding = true;
        System.out.println("공부를 시작한다");
    }
}

메서드의 실행

메서드에는 인스턴스 메서드와 정적 메서드가 존재합니다.

인스턴스 메서드는 인스턴스 변수와 같이 인스턴스를 생성 후에 호출할 수 있습니다.

Person person = new Person();
// 인스턴스 메서드의 실행
person.setName("록카");

String name = person.getName();

정적 메서드

정적 변수와 같이 메서드도 정적 메서드가 존재하는데요. 정적 메서드는 객체를 인스턴스화하지 않고 사용할 수 있는 메서드입니다.

정적 메서드 또한 정적 변수와 같이 프로그램 시작 시 메서드의 내용이 적재되기 때문에 인스턴스 생성 없이도 메서드를 호출할 수 있습니다.

class Utils {
    static int plus(int a, int b) {
        return a + b;
    }
}
int sum = Utils.plus(1, 3);

System.out.println(sum);

그러나 정적 메서드에도 제약이 있습니다.

class Utils {
    // 인스턴스 변수
    int c = 3;
 
    static int plus(int a, int b) {
        // 인스턴스 변수 c에 접근할 수 없다 
        return a + b + c;
    }
}

정적 메서드도 생성과 소멸의 수명주기가 인스턴스 변수와 다르기 때문에, 정적 메서드 내부에서 인스턴스 변수 c에 접근할 수 없습니다.

class Utils {
    // 정적 변수
    static int c = 3;
 
    static int plus(int a, int b) {
        return a + b + c;
    }
}

그러나 정적 변수는 프로그램 시작이 메모리에 적재되기 때문에 정적 메서드 내부에서 접근할 수 있습니다.


2. [실습해보기] 메서드를 작성해보자


1. 메서드 선언하기

case 1

코드 작성(Person.java)

class Person {
    String name;
    int age;
    String gender;

    Person(String name, int age, String gender) { 
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    // 인스턴스 메서드
    void eat(String food) {
        System.out.printf("%s는 %s를 먹었다\n", name, food);
    }

    // 인스턴스 메서드
    String getPersonInfo() {
        return String.format("name: %s, age: %d, gender: %s", name, age, gender);
    }

    // 정적 메서드
    static void printSpecies() {
        System.out.println("사람입니다");
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {

        Person.printSpecies();

        Person person = new Person("김철수", 20, "male");
        person.eat("밥");

        System.out.println(person.getPersonInfo());
 
    }
}

출력

사람입니다
김철수는 밥을 먹었다
name: 김철수, age: 20, gender: male
도전자 질문
아이콘마야(2023-11-23 11:58 작성됨)
인스턴스 변수와 정적 메서드는 수명주기가 다르고 정적변수와 인스턴스 메서드는 수명주기가 같다는 것이 무슨말인지 이해가 안 됩니다 
여기서 말하는 수명주기는 무슨 뜻인가요 ? 
아이콘bng4535(2022-01-01 13:29 작성됨)
안녕하세요 선생님. 강의 잘 듣고 있습니다 항상 감사합니다. 궁금한 것이 있는데요, 정적, 인스턴스 메소드나 변수는 각각 언제 사용하는 건가요?? 현업에서 실제로 어떻게 쓰이는지 한 예를 들어서 설명해주시면 도움이 많이 될 것 같습니다.  
아이콘코드라떼(2022-01-01 13:58 작성됨)
안녕하세요. 코드라떼입니다 :)

정적, 인스턴스 메서드나 변수는 이후에 들으시는 메모장 강의를 수강하시면 알 수 있습니다.

현업의 예시로는 도메인 객체나, 값 객체를 만들어서 사용하는 경우가 있는데 지금까지 강의를 수강하신 단계에선 왜 필요한지에 대한 공감과 이해를 드리기 쉽지 않을 것 같습니다. 
그러므로 강의를 좀 더 진행하시는 것을 권장드립니다.

감사합니다.
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
파일
파일파일
Root
파일

실습해보세요의 코드를 작성해보세요.

Output
root$
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의객체에 행위를 추가하다 - 메서드최종수정일 2021-11-21
아이콘약 3분

객체의 행위를 메서드라고 하는데요. 이번 강의는 메서드를 만드는 법을 배워봅시다.

추가 노트

목차


  1. 메서드

  2. [실습해보기] 메서드를 작성해보자

1. 메서드(Method)


메서드는 기본적으로 네 가지 메서드로 존재할 수 있습니다.

  1. 반환값이 있고 매개변수도 있는 메서드

  2. 반환값이 있고 매개변수가 없는 메서드

  3. 반환값이 없고 매개변수가 있는 메서드

  4. 반환값이 없고 매개변수가 없는 메서드

인스턴스 변수와 정적 변수가 있듯이 메서드에는 인스턴스 메서드정적 메서드가 있습니다.


메서드의 선언과 정의

메서드는 클래스 내부에 선언되며 다음과 같을 수 있습니다.

class Person {
    String name;
    int age;
    String gender;

    // 반환값이 없고 매개변수가 있는 메서드
    void setName(String name) {
        this.name = name;
    }

    // 반환값이 있고 매개변수가 없는 메서드
    String getName() {
        System.out.println(name);
        return name;
    }
}

반환값이 없는 메서드는 void 키워드를 선언해야 하며, 반환값이 있는 메서드는 메서드 내부에 return 키워드와 반환값이 존재해야 합니다.


반환값이 없는 메서드에도 return 키워드가 존재할 수 있다

메서드 실행 도중 종료되길 원한다면 메서드에서 반환값없는 return 키워드를 이용하여 메서드 실행을 종료할 수 있습니다.

class Study {boolean isStuding;

    void start() {
        if (isStuding) {
            System.out.println("이미 공부중이다");
            return;
        }
        isStuding = true;
        System.out.println("공부를 시작한다");
    }
}

메서드의 실행

메서드에는 인스턴스 메서드와 정적 메서드가 존재합니다.

인스턴스 메서드는 인스턴스 변수와 같이 인스턴스를 생성 후에 호출할 수 있습니다.

Person person = new Person();
// 인스턴스 메서드의 실행
person.setName("록카");

String name = person.getName();

정적 메서드

정적 변수와 같이 메서드도 정적 메서드가 존재하는데요. 정적 메서드는 객체를 인스턴스화하지 않고 사용할 수 있는 메서드입니다.

정적 메서드 또한 정적 변수와 같이 프로그램 시작 시 메서드의 내용이 적재되기 때문에 인스턴스 생성 없이도 메서드를 호출할 수 있습니다.

class Utils {
    static int plus(int a, int b) {
        return a + b;
    }
}
int sum = Utils.plus(1, 3);

System.out.println(sum);

그러나 정적 메서드에도 제약이 있습니다.

class Utils {
    // 인스턴스 변수
    int c = 3;
 
    static int plus(int a, int b) {
        // 인스턴스 변수 c에 접근할 수 없다 
        return a + b + c;
    }
}

정적 메서드도 생성과 소멸의 수명주기가 인스턴스 변수와 다르기 때문에, 정적 메서드 내부에서 인스턴스 변수 c에 접근할 수 없습니다.

class Utils {
    // 정적 변수
    static int c = 3;
 
    static int plus(int a, int b) {
        return a + b + c;
    }
}

그러나 정적 변수는 프로그램 시작이 메모리에 적재되기 때문에 정적 메서드 내부에서 접근할 수 있습니다.


2. [실습해보기] 메서드를 작성해보자


1. 메서드 선언하기

case 1

코드 작성(Person.java)

class Person {
    String name;
    int age;
    String gender;

    Person(String name, int age, String gender) { 
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    // 인스턴스 메서드
    void eat(String food) {
        System.out.printf("%s는 %s를 먹었다\n", name, food);
    }

    // 인스턴스 메서드
    String getPersonInfo() {
        return String.format("name: %s, age: %d, gender: %s", name, age, gender);
    }

    // 정적 메서드
    static void printSpecies() {
        System.out.println("사람입니다");
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {

        Person.printSpecies();

        Person person = new Person("김철수", 20, "male");
        person.eat("밥");

        System.out.println(person.getPersonInfo());
 
    }
}

출력

사람입니다
김철수는 밥을 먹었다
name: 김철수, age: 20, gender: male
도전자 질문
아이콘마야(2023-11-23 11:58 작성됨)
인스턴스 변수와 정적 메서드는 수명주기가 다르고 정적변수와 인스턴스 메서드는 수명주기가 같다는 것이 무슨말인지 이해가 안 됩니다 
여기서 말하는 수명주기는 무슨 뜻인가요 ? 
아이콘bng4535(2022-01-01 13:29 작성됨)
안녕하세요 선생님. 강의 잘 듣고 있습니다 항상 감사합니다. 궁금한 것이 있는데요, 정적, 인스턴스 메소드나 변수는 각각 언제 사용하는 건가요?? 현업에서 실제로 어떻게 쓰이는지 한 예를 들어서 설명해주시면 도움이 많이 될 것 같습니다.  
아이콘코드라떼(2022-01-01 13:58 작성됨)
안녕하세요. 코드라떼입니다 :)

정적, 인스턴스 메서드나 변수는 이후에 들으시는 메모장 강의를 수강하시면 알 수 있습니다.

현업의 예시로는 도메인 객체나, 값 객체를 만들어서 사용하는 경우가 있는데 지금까지 강의를 수강하신 단계에선 왜 필요한지에 대한 공감과 이해를 드리기 쉽지 않을 것 같습니다. 
그러므로 강의를 좀 더 진행하시는 것을 권장드립니다.

감사합니다.
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)
파일
파일파일
Root
파일

실습해보세요의 코드를 작성해보세요.

Output
root$