1. Static 으로 매서드를 만든 경우

public class MyUtil {
    public static int hap(int a, int b){
        int v=a+b;
        return v;
    }
}

2. NoneStatic 으로 매서드를 만든 경우

public class MyUtil1 {
    public int hap(int a, int b){
        int v=a+b;
        return v;
    }
}

호출해서 사용할 때의 차이

public class StaticAccess {
    public static void main(String[] args) {
        int a=10;
        int b=20;

//Static
        int sum=MyUtil.hap(a,b);    //클래스이름.호출매서드
        System.out.println("sum = " + sum);


//NoneStatic
        MyUtil1 my=new MyUtil1();     //객체 생성
        int sum1= my.hap1(a,b);         //생성한 객체.호출매서드
        System.out.println("sum1 = " + sum);
    }
}
sum = 30
sum1 = 30

종료 코드 0(으)로 완료된 프로세스

*생성자는 반드시 public 이다? -> X

Static으로 생성한 매서드도 객체를 생성하는 방법으로 호출해서 사용할 수 있는데 바람직하지 않음.

private 생성자를 추가해서 객체를 생성할 수 없도록 할 수 있음.

자바에서 제공하는 system, math 클래스도 private 생성자를 가지고 있어서  System s=new System(); 식으로 사용할 수 없다.

public class AllStatic {
    private AllStatic(){}   //private 생성자 추가
    public static int hap(int a, int b){
        int v=a+b;
        return v;
    }

 

 

 

 

'Study > Java' 카테고리의 다른 글

[개념]연산자2  (1) 2025.06.18
[개념]JVM이 사용하는 메모리 영역  (0) 2025.06.15
[개념]매서드(Method)  (0) 2025.06.02
[개념] for문과 while문  (4) 2025.05.30
[개념]If문과 Switch-case문  (0) 2025.05.30

+ Recent posts