728x90
반응형
이번 시간에는 작성한 메서드를 호출하여 사용하는 방법에 대해 알아볼까 합니다.
메서드에 선언된 매개 변수가 있는지 없는지에 따라, 메서드 호출은
이와 같이 두 가지 방식으로 나뉩니다.
계산기를 호출하는 예제를 통해 메서드가 호출되는 방식에 대해 더 구체적으로 알아보겠습니다.
public class Main
{
public static void main(String[] args) {
Calculator mycal = new Calculator();
mycal.power();
System.out.println("계산기가 켜졌습니다.");
long result1 = mycal.add(5,3);
long result2 = mycal.subtract(5,3);
long result3 = mycal.multiply(5,3);
long result4 = mycal.divide(5,3);
System.out.println("add(5,3)= " + result1);
System.out.println("subtract(5,3)= " + result2);
System.out.println("multiply(5,3)= " + result3);
System.out.println("divide(5,3)= " + result4);
mycal.power();
System.out.println("계산기를 끕니다.");
}
}
class Calculator{
long add(long a, long b){
long result = a+b;
return result;
}
long subtract (long a, long b){
return a-b;
}
long multiply(long a, long b){
return a*b;
}
long divide(long a, long b){
return a/b;
}
boolean power = false;
void power(){
power = !power;
}
}
매개변수가 없는 power 메서드를 통해 계산기의 전원을 켰다 껐다 할 수 있었습니다.
그리고 계산을 하기 위해 입력하는 매개변수 2개를 덧셈, 뺄셈, 곱셈, 나눗셈 메서드에 넣어 각각의 연산 결과값 (나눗셈은 몫) 을 받을 수 있었습니다.
또한, 같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않아도 서로를 호출할 수 있지만, static 메서드의 경우 같은 클래스 내의 인스턴스 메서드를 호출할 수 없습니다.
아래의 예제를 통해 경우의 수를 따져보도록 하겠습니다.
class C1{
static int static_variable = 1;
int instance_variable = 2;
static void static_static(){
System.out.println(static_variable);
}
static void static_instance(){
// 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다.
//System.out.println(instance_variable);
}
void instance_static(){
// 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다.
System.out.println(static_variable);
}
void instance_instance(){
System.out.println(instance_variable);
}
}
static 변수에 1, instance변수에 2를 지정했습니다.
클래스 메서드에서는 instance 변수에 접근할 수 없지만, 그 반대의 경우는 접근이 가능합니다.
같은 형태면 변수에 접근할 수 있는 건 따로 설명드릴 필요가 없을 것입니다.
이 내용을 구체화한 코드가 아래와 같습니다.
public class Main
{
public static void main(String[] args) {
C1 c = new C1();
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 인스턴스 메소드가 정적 변수에 접근 -> 성공 : 1
c.static_static();
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 정적 메소드가 인스턴스 변수에 접근 -> 실패
c.static_instance();
System.out.println("error");
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 클래스 변수에 접근 -> 성공 : 1
c.instance_static();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 인스턴스 변수에 접근 -> 성공 : 2
c.instance_instance();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 클래스 변수에 접근 -> 성공 : 1
C1.static_static();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 인스턴스 변수에 접근 -> 실패
C1.static_instance();
System.out.println("error");
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
//C1.instance_static();
System.out.println("error");
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
//C1.instance_instance();
System.out.println("error");
}
}
그리고 그 결과는 위와 같습니다.
이번 레터를 통해 메서드가 값을 return하는 방식에 대해 알아보았습니다.
다음 편에서는 메서드를 호출하는 방법에 대해 알아보겠습니다.
728x90
반응형
'study > Java' 카테고리의 다른 글
기본형/참조형 매개변수 (0) | 2021.08.22 |
---|---|
JVM의 메모리 구조 (0) | 2021.08.21 |
자바Java 메서드 (2) – return (0) | 2021.08.19 |
자바Java 메서드 (1) – 정의와 구조 (0) | 2021.08.18 |
자바 Java 선언 위치에 따른 변수의 종류 (0) | 2021.08.17 |
댓글