객체가 가지고 있는 동작, 기능을 Method라고 하며 메서드를 정의하고 메서드를 호출 방법에 대해서 학습한다.
- Method는 무엇인가
- 메서드는 변수
- 매개변수 parameter passing
- 메서드 Overloading
method 또는 member function는 객체 지향 프로그래밍에서 객체과 관련된 서브 루틴 (또는 함수)이며 데이터와 멤버 변수에 대한 접근 권한을 갖는다.
클래스 기반 언어에서 클래스 내부에 정의되어 있다.
메서드는 프로그램이 실행되고있을때 클래스에서 생성된 인스턴스와 관련된 동작을 정의한다. 메서드는 런타임 중에 클래스 인스턴스 (또는 클래스 객체)에 저장되어 있는 데이터에 접근할 수 있는 특수 속성을 가지고 있다.
바인딩은 클래스와 메서드 간의 연관관계를 말합니다.
클래스와 관련된 메서드는 클래스에 바인딩 할 수 있다. 메서드는 컴파일 타임 (정적 바인딩) 또는 런타임 (동적 바인딩)에 클래스에 바인딩 할 수 있다.
public static 리턴타입(자료형, void) 메서드명() {
메서드 작성
return 리턴 데이터;
}
접근제한자 (1)리턴타입 메소드명 (2)(인수1, 인수2){
수행코드;
(3)return 반환값;
}
(1). 수행된 후에 return하는 결과의 자료형 아무 결과도 반환하지 않으면 자료형에 void를 씀
(2). 매개변수는 콤마로 구분, 매개변수가 없더라도 괄호 ( ) 필요
(3). 메서드를 종료하고 메서드의 결과를 반환(return)하는 역할
public static void main(String[] agrs){
int a = 3;
int b = 5;
int resul = add(a,b)
}
public int add(int a, int b){
int sum = a+b;
return sum;
}
public class MethodMakeTest {
public static void main(String[] args) {
int a = 3;
int b = 5;
// add 라는 메서드를 call하여 두수의 합의 결과를 받아보자.
int result = add(a,b);
System.out.println("result = " + result);
}
// Q. 매개변수로 2개의 정수를 받아서 총합을 구하여 리턴 하는 메서드를 정의하세요.
public static int add(int a, int b){
int sum = a+b;
return sum;
}
}
✓ 메서드의 결과 값은 하나의 형태로 만들어진다.
✓ 변수는 데이터를 하나의 형태로 저장한다.
✓ 메서드의 이름이 변수 역할을 한다.
public int add(int a, int b){
int sum = a+b;
return sum;
}
public int add(int[] a) {
int sum=0;
for(int i=0;i<a.length;i++){
sum+=a[i];
}
return sum;
}
public class CallByReferenceExam {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
// 배열의 총합을 구하여 출력하세요?
int result = addArray(a); // 번지전달(Call By Reference)
}
// Q. 매개변수로 정수형 배열을 받아서 / 배열의 총합을 구하여 / 리턴 하는 메서드를 정의 하세요.
public static int addArray(int[] x){
int sum = 0;
for (int i = 0; i<x.length; i++){
sum = sum+x[i]; // sum += a[i];
}
return sum;
}
}
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라고 한다. 상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩할 필요가 생긴다.
오버라이딩의 조건
오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.
public class CallByReference {
public static void main(String[] args) {
// Call By Value(값 전달)
// Call By Reference(번지 전달)
float a = 56.7f;
float b = 78.9f;
floatAdd(a,b); // Call By Value
System.out.println("종료");
}// 끝 -> 종료
// Q. 매개변수로 2개의 실수를 받아서 / 총합을 구하여 / 출력하는 / 메서드를 정의하세요.
public static void floatAdd(float a, float b){
float hap = a+b;
System.out.println("hap = " + hap);
// return;
}
}