개발/Java
객체 생성과 static 과의 관계
by BellOne4222
2024. 1. 28.
객체 생성과 static 과의 관계
- 객체 생성을 못하게 막기 위해서 클래스의 생성자를 private으로 설정할 수 있다.
- new를 사용하여 객체 생성 불가
- 자주 사용하는 클래스들은 객체를 생성하지 않고(private으로 선언) 클래스에 직접 접근해서 메서드 사용 하기 위해서 객체 생성을 막는다.
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) {
// 메서드가 전부 static으로 설정되어 있지 않을 때
// AllStatic의 생성자를 private으로 만들면 불가능
//AllStatic st=new AllStatic();
//System.out.println(st.hap(10,20)); // 30
//System.out.println(st.max(10,20)); // 20
//System.out.println(st.min(10,20)); // 10
// 메서드가 전부 static으로 설정되었을 때, 생성자를 private으로도 선언 할 수 있다.
// 모든 멤버가 static 일 때, 메서드를 모두 static으로 만들어서 객체 생성을 못하게 만들 수 있다.
// 아래 방식으로 코드를 구현해야 한다.
System.out.println(AllStatic.hap(10,20));
System.out.println(AllStatic.max(10,20));
System.out.println(AllStatic.min(10,20));
//System sys=new System(); // private
//System.
//Math m=new Math(); // private
System.out.println(Math.max(30,60)); // 60
System.out.println(Math.min(40,10)); // 10
}
}
class, object, instance의 상호관계
- class
- Object(객체)
- 클래스를 통해서 선언되는 변수
- Student(객체 자료형) st(객체변수); → 앞으로 데이터를 담을 예정이다.
- 변수가 구체적인 실체(대상)를 가리키지 않는 상태(객체 변수)
- 객체가 서로 구분이 되지 않은 시점
- Instance(인스턴스, 실체)
- 객체 생성에 의해 메모리(Heap Memory)에 만들어진 객체를 인스턴스 라고 한다.
- st = new Student();
- st → 인스턴스
- 객체가 구체적인 실체를 가리키는 상태(인스턴스)
- 객체가 서로 구분이 되는 시점
package fc.java.part3;
import fc.java.model.Student;
public class ClassObjectInstance {
public static void main(String[] args) {
Student st1; // st1 : object 상태
Student st2; // st2 : object 상태
Student st3; // st3 : object 상태
// 지역 변수(인스턴스) = new를 통해서 Heap Memory에 저장하는 구조
st1=new Student("홍길동","컴퓨터공학과",37,"bit@empas.com",2023110,"010-1111-1111"); // st1 : instance 상태
st2=new Student("김길동","컴퓨터공학과",37,"bit@empas.com",2023110,"010-1111-1111"); // st2 : instance 상태
st3=new Student("나길동","컴퓨터공학과",37,"bit@empas.com",2023110,"010-1111-1111"); // st3 : instance 상태
System.out.println(st1.toString());
System.out.println(st2.toString());
System.out.println(st3.toString());
}
}