2023-05-09 화
스태틱 메소드(Static Method)
: 메소드를 호출 하려면 new를 이용해 메소드가 들어있는 클래스의 인스턴스를 생성해야만 호출 할 수 있습니다.
하지만, static을 붙이면 JVM이 실행 될 때 인스턴스를 생성하므로 new를 이용해 인스턴스를 생성하지 않고도 main() 메소드에서 바로 메소드를 호출 할 수 있습니다.
main()에서 바로 쓸 수 있을 뿐만 아니라 모든 곳에서 불러와 쓸 수 있습니다.
스태틱 메소드 선언 방법
public class Calculator {
public void plus() {
System.out.println(1 + 1);
}
public void printPlusOne(int num) {
37
System.out.println(num + 1);
}
public void printPlus(int num1, int num2) {
System.out.println(num1 + num2);
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.printPlus(10, 20);
calculator.printPlus(20, 30);
}
}
- 스태틱 메소드 호출 : 인스턴스를 따로 생성하지 않고 메소드 이름 만으로도 호출 가능합니다.
public class Calculator {
// 생략
public static void printMinus(int num1, int num2) {
System.out.println(num1 - num2);
}
public static void main(String[] args) {
printMinus(10, 20);
}
}
결과 -10
- 다른 클래스에서 스태틱 메소드 호출하기 : 스태틱 메소드는 접근 제어자를 public으로 해놓았다면 다른 클래스에서도 바로 호출해서 쓸 수 있습니다. new를 쓰지 않고 호출이 가능하지만, 호출하려는 스태틱 메소드가 어떤 클래스에 선언된 메소드 인지를 지정 해주어야 합니다.
public class CalculatorTest {
public static void main(String[] args) {
Calculator.printMinus(10, 20);
}
}
결과 -10
- Integer.parseInt() Math.pow() 등은 스테틱 메소드이기 때문에 인스턴스를 따로 생성하지 않고도 호출이 가능합니다.
public class PreDefinedStaticMethod {
public static void main(String[] args) {
Integer.parseInt("30");
Math.pow(2, 10);
}
}
리팩토링
: main()에서 실행 하는 것이기 때문에 스태틱 메소드를 이용해 분리하는 것
- System.out.println()이 반복되는 케이스
매개변수 (Parameter) 만들기
매개변수는 메소드를 호출하는 곳에서 메소드로 값을 보낼 때 받아주는 역할을 하는 변수입니다.
매개변수로는 int타입의 이차원 배열인 int[][]arr을 받아줍니다.
분리가 완료된 코드
import java.util.Arrays;
public class SeparateToMethod3 {
43
public static void printArray(int[][] arr) {
System.out.println(Arrays.toString(arr[0]));
System.out.println(Arrays.toString(arr[1]));
System.out.println(Arrays.toString(arr[2]));
}
public static void main(String[] args) {
int[][] arr = {
{10, 20, 30},
{40, 50, 60},
{70, 80, 90}
};
printArray(arr);
}
}
결과
[10, 20, 30]
[40, 50, 60]
[70, 80, 90]
- this 는 클래스는 가리킵니다. (클래스 자체를 지칭)
- super는 부모 클래스
- extentds는 자식 클래스