728x90
💡 어떤 클래스의 (객체) 모든 멤버가 static 멤버인 경우를 생각해보자
하나의 클래스 내부에 선언된 모든 메서드가 static으로 선언되었을 시 메인 메서드가 선언된 클래스에서 static 메서드로 접근할 시 클래스이름.메서드이름으로 접근이 쉽게 할 수 있습니다.
static 으로 선언한 메서드를 new연산자를 생성하여 객체 생성을 해서 사용할 수도 있기 때문에 코드를 작성할 때, 생성자 메서드(default method)를 private로 접근을 제한하여 선언해주면 객체생성을 못하도록 인위적으로 막을수가 있습니다.
자바 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
반응형
'[ BACKEND] > JAVA_객체지향' 카테고리의 다른 글
[JAVA] 상속 관계에서의 객체 생성 및 Override (0) | 2023.06.18 |
---|---|
[JAVA] 객체지향 프로그래밍 설계 (2) | 2023.06.17 |
[JAVA] static과 JVM의 메모리 모델 (0) | 2023.06.15 |
[JAVA] VO클래스 설계 시 중요사항 (정보은닉 , Getter&Setter, 생성자 메서드, 오버로딩) (0) | 2023.06.14 |
[JAVA] 객체 접근 권한 & 패키지 (1) | 2023.06.13 |