728x90

 

💡 어떤 클래스의 (객체) 모든 멤버가 static 멤버인 경우를 생각해보자

 

하나의 클래스 내부에 선언된 모든 메서드가 static으로 선언되었을 시 메인 메서드가 선언된 클래스에서 static 메서드로 접근할 시 클래스이름.메서드이름으로 접근이 쉽게 할 수 있습니다.

static 으로 선언한 메서드를 new연산자를 생성하여 객체 생성을 해서 사용할 수도 있기 때문에 코드를 작성할 때, 생성자 메서드(default method)를 private로 접근을 제한하여 선언해주면 객체생성을 못하도록 인위적으로 막을수가 있습니다.

https://velog.io/@steadygo247

자바 API에서는 private 생성자를 가지고 있는 클래스도 있다 ex) System , Math 등

//AllStatic 클래스

public class AllStatic {

    private AllStatic() {}
    public static int hap(int a, int b) {
        int v = a+b;
        return v;
    }
    
    public static int max(int a, int b) {
        return a>b ? a : b;
    }
    
    public static int min (int a, int b){
        return a<b ? a : b;
    }
}

//메인 메서드 클래스

public class AllStaticTest {

    public static void main(String[] args) {
    
        //AllStatic st = new AllStatic();
        //System.out.println(st.hap(3,5));
        //System.out.println(st.max(10,5));
        //System.out.println(st.min(10,5));
        
        System.out.println(AllStatic.hap(10,20));
        System.out.println(AllStatic.max(10,20));
        System.out.println(AllStatic.min(10,20));
    }
}

AllStatic 클래스내에서 Allstatic 생성자 메서드를 접근제어자 private를 사용해서
외부클래스 메인 메서드에서 객체 생성이 되지 않도록 막아두었음.

 

🎈 Class, Object, Instance 구분해보기

객체지향의 가장 기본이라고 볼 수 있는 용어들이며 , 객체를 나타내는 말들이지만 생성되는 시점에 따라서 조금씩 용어들이 달라질 뿐이다. 객체지향의 기본 개념은 인스턴스를 이용하여 생성된 객체에 접근하는 것이 가장 기본!

  • Class (클래스) : 객체를 모델링 하는 도구 (설계도) / 새로운 자료형을 만드는 도구! ex) public class Student { … }
  • Object(객체) : 클래스를 통해서 선언되는 변수 ex) Student st(객체변수 - 학생이라는 객체를 담을 변수(담을 예정)) → 앞으로 가리킴 변수가 구체적인 실체(대상)을 가리키지 않는 상태 / 객체가 서로 구분이 되지 않는 시점
  • Instance(인스턴스 , 실체) : 객체생성에 의해 메모리 (Heap Memory)에 만들어진 객체를 인스턴스(Instance)라고 한다. ex) st = new Student(); (인스턴스 - new 연산자와 생성자 메서드를 이용하여 객체가 생성되며 구체적인 실체로 할당을 받으면서 객체변수에서 인스턴스변수로 변하게 된다) 객체가 서로 구분이 되는 시점 (name , age, email, year …등)
728x90
반응형

+ Recent posts