객체의 행위를 메서드라고 하는데요. 이번 강의는 메서드를 만드는 법을 배워봅시다.
ㅤ
메서드는 기본적으로 네 가지 메서드로 존재할 수 있습니다.
반환값이 있고 매개변수도 있는 메서드
반환값이 있고 매개변수가 없는 메서드
반환값이 없고 매개변수가 있는 메서드
반환값이 없고 매개변수가 없는 메서드
인스턴스 변수와 정적 변수가 있듯이 메서드에는 인스턴스 메서드와 정적 메서드가 있습니다.
ㅤ
메서드는 클래스 내부에 선언되며 다음과 같을 수 있습니다.
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
키워드를 이용하여 메서드 실행을 종료할 수 있습니다.
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;
}
}
그러나 정적 변수는 프로그램 시작이 메모리에 적재되기 때문에 정적 메서드 내부에서 접근할 수 있습니다.
ㅤ
ㅤ
코드 작성(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
인스턴스 변수와 정적 메서드는 수명주기가 다르고 정적변수와 인스턴스 메서드는 수명주기가 같다는 것이 무슨말인지 이해가 안 됩니다 여기서 말하는 수명주기는 무슨 뜻인가요 ?
안녕하세요 선생님. 강의 잘 듣고 있습니다 항상 감사합니다. 궁금한 것이 있는데요, 정적, 인스턴스 메소드나 변수는 각각 언제 사용하는 건가요?? 현업에서 실제로 어떻게 쓰이는지 한 예를 들어서 설명해주시면 도움이 많이 될 것 같습니다.
안녕하세요. 코드라떼입니다 :) 정적, 인스턴스 메서드나 변수는 이후에 들으시는 메모장 강의를 수강하시면 알 수 있습니다. 현업의 예시로는 도메인 객체나, 값 객체를 만들어서 사용하는 경우가 있는데 지금까지 강의를 수강하신 단계에선 왜 필요한지에 대한 공감과 이해를 드리기 쉽지 않을 것 같습니다. 그러므로 강의를 좀 더 진행하시는 것을 권장드립니다. 감사합니다.
실습해보세요의 코드를 작성해보세요.
객체의 행위를 메서드라고 하는데요. 이번 강의는 메서드를 만드는 법을 배워봅시다.
ㅤ
메서드는 기본적으로 네 가지 메서드로 존재할 수 있습니다.
반환값이 있고 매개변수도 있는 메서드
반환값이 있고 매개변수가 없는 메서드
반환값이 없고 매개변수가 있는 메서드
반환값이 없고 매개변수가 없는 메서드
인스턴스 변수와 정적 변수가 있듯이 메서드에는 인스턴스 메서드와 정적 메서드가 있습니다.
ㅤ
메서드는 클래스 내부에 선언되며 다음과 같을 수 있습니다.
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
키워드를 이용하여 메서드 실행을 종료할 수 있습니다.
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;
}
}
그러나 정적 변수는 프로그램 시작이 메모리에 적재되기 때문에 정적 메서드 내부에서 접근할 수 있습니다.
ㅤ
ㅤ
코드 작성(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
인스턴스 변수와 정적 메서드는 수명주기가 다르고 정적변수와 인스턴스 메서드는 수명주기가 같다는 것이 무슨말인지 이해가 안 됩니다 여기서 말하는 수명주기는 무슨 뜻인가요 ?
안녕하세요 선생님. 강의 잘 듣고 있습니다 항상 감사합니다. 궁금한 것이 있는데요, 정적, 인스턴스 메소드나 변수는 각각 언제 사용하는 건가요?? 현업에서 실제로 어떻게 쓰이는지 한 예를 들어서 설명해주시면 도움이 많이 될 것 같습니다.
안녕하세요. 코드라떼입니다 :) 정적, 인스턴스 메서드나 변수는 이후에 들으시는 메모장 강의를 수강하시면 알 수 있습니다. 현업의 예시로는 도메인 객체나, 값 객체를 만들어서 사용하는 경우가 있는데 지금까지 강의를 수강하신 단계에선 왜 필요한지에 대한 공감과 이해를 드리기 쉽지 않을 것 같습니다. 그러므로 강의를 좀 더 진행하시는 것을 권장드립니다. 감사합니다.
실습해보세요의 코드를 작성해보세요.