일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Tkinter
- Java
- gas
- Excel
- PySpark
- GIT
- array
- Mac
- PANDAS
- list
- PostgreSQL
- Apache
- math
- c#
- string
- Python
- numpy
- dataframe
- 파이썬
- Google Spreadsheet
- Google Excel
- matplotlib
- Kotlin
- django
- SQL
- google apps script
- Github
- hive
- Redshift
- Today
- Total
달나라 노트
Java - method 본문
만약 class의 개념에 대해 잘 이해되지 않았다면 아래 링크를 먼저 읽으시는걸 추천드립니다.
method에 대해 알아봅시다.
class를 이용하여 object(객체)를 만들 수 있습니다.
그리고 이 객체는 method와 속성을 가질 수 있습니다.
속성은 해당 객체의 특성값들(변수와 그 값)을 의미하고, method는 해당 객체가 가지는 어떤 기능을 의미합니다.
method를 사용하는 이유는 코드를 줄이기 위해서입니다.
프로그램을 만들다 보면 동일한 기능을 여러 번 사용해야해서 동일한 코드를 여러 번 적는 경우가 있습니다.
이런 경우 어떤 기능을 가진 method를 작성해놓고, 해당 기능이 필요할 때 마다 method의 이름만 호출하면 되니까 코드를 줄일 수 있습니다.
method는 다음과 같이 만들 수 있습니다.
public return_data_type method_name(datatype_1 parameter_1, datatype_2 parameter_2, ...) {
code block;
return return_value;
}
public은 해당 method를 다른 곳에서도 참조할 수 있다는 뜻입니다.
return_data_type은 해당 method가 return 하는 값의 data type입니다. int, double, String 등이 있으며 return 값이 없을 경우 void를 적습니다.
method_name은 method 이름을 의미합니다.
그리고 괄호 안에 method 호출 시 입력받을 여러 parameter와 각 parameter의 data type을 적어줘야합니다.
중괄호 안에 method내용을 입력한 후 return 값은 return 키워드를 통해 값을 반환할 수 있습니다.
public class JavaMethod {
public int sum(int a, int b) {
return a + b;
}
public int multiply(int a, int b) {
return a * b;
}
public static void main(String args[]) {
JavaMethod obj_calculate = new JavaMethod();
int sum_result = obj_calculate.sum(1, 2);
int multiply_result = obj_calculate.multiply(10, 20);
System.out.println(sum_result);
System.out.println(multiply_result);
}
}
-- Result
3
200
위 코드를 봅시다.
JavaMethod라는 class를 선언하였고 이 class에 sum, multiply라는 2개의 method를 작성했습니다.
이때 sum, multiply 각각은 int를 parameter로 받아 int를 return하므로 method의 return data type으로 int를 적었습니다.
또한 sum, multiply method는 추후에 객체를 만들 때 그 객체에서 사용할 method들 이므로 class를 위한 method가 아닙니다.
따라서 static 키워드는 사용하지 않았습니다.
main method에선 obj_calcaulate라는 객체를 생성하였습니다.
JavaMethod class를 이용해 obj_calculate 객체를 만들었으므로 obj_calculate도 당연히 sum, multiply method를 가집니다.
그리고 obj_calcualte 객체 속 method를 사용하여 그 결과를 sum_result, multiply_result 변수에 할당하고 그것을 출력한 것입니다.
method는 parameter를 받을 수도 있고 받지 않을 수도 있습니다.
또한 return 값이 있을수도 없을수도 있습니다.
따라서
1. parameter를 받고 return 값이 있는 method
2. parameter를 받고 return 값이 없는 method
3. parameter를 안받고 return 값이 있는 method
4. parameter를 안받고 return 값이 없는 method
위 4개의 종류가 있습니다.
parameter를 받는지 여부는 method_name 오른 쪽 괄호에 parameter 정보가 적혀있는지를 보면 됩니다. 적혀있으면 parameter를 받는 method입니다.
return값이 있는지 여부는 method에서 return 키워드가 존재하는지를 보면 됩니다.
public class JavaMethod {
public void test_method(int x) {
x = x + 10;
}
public static void main(String args[]) {
int x = 1;
JavaMethod variable_test = new JavaMethod();
variable_test.test_method(x);
System.out.println(x);
}
}
-- Result
1
위 코드의 test_method는 parameter를 받고 거기에 10을 더합니다. 그리고 return값은 없네요.
그리고 main method에선 class를 생성하여 test_method를 호출합니다.
여기서 한 가지 생각해보죠.
main method에서 int x = 1;로 변수 x에 1을 할당하였습니다.
그러면 variable_test.test_method(x)에서 1을 전달하고 x에 10을 더했으니 x는 11이 되겠죠.
그러면 println(x)의 결과도 11일까요?
아닙니다. 1입니다.
어떠한 object의 method 내부에서 선언된 변수는 오직 해당 method 내부에서만 유효합니다.
즉, main method에서 int x = 1을 통해 x가 1이며 동일한 변수명인 x를 가지고 test_method를 작동시켰다고 해도,
test_method 속 x는 해당 method 밖에 있는 x에 영향을 주지 못합니다.
만약 test_method 속의 연산 결과를 method 밖으로 가져오고싶으면 return을 이용해야 합니다.
'Java' 카테고리의 다른 글
Java - method overloading (0) | 2021.03.12 |
---|---|
Java - method parameter (0) | 2021.03.12 |
Java - Variables (변수) (0) | 2021.03.11 |
Java - Datatype (0) | 2021.03.11 |
Java - while loop (0) | 2021.03.11 |